具有无符号短整数的结构的大小

2023-12-28

我在浏览我们的一份组织数据文档时发现了以下代码。

struct A {
 unsigned short int i:1;
 unsigned short int j:1;
 unsigned short int k:14;
};


int main(){
 A aa;
 int n = sizeof(aa);
 cout << n;
}

最初我认为大小将为 6 个字节,因为 unsigned Short int 的大小为 2 个字节。但上述代码的输出是 2 个字节(在 Visual Studio 2008 上)。

是否有轻微的可能性i:1, j:1 and k:14使它成为一个位字段或什么?这只是一个猜测,我对此不太确定。有人可以帮我吗?


对,这就是bitfield, 的确。

Well, i'm not very much sure about c++, but In c99 standard, as per chapter 6.7.2.1 (10):

实现可以分配任何足够大以容纳位字段的可寻址存储单元。如果剩余足够的空间,则结构中紧跟在另一个位字段之后的位字段应被打包到同一单元的相邻位中。如果剩余空间不足,则不适合的位字段是否放入下一个位或与相邻单元重叠是实现定义的。单元内位字段的分配顺序(高位到低位或低位到高位)是由实现定义的。可寻址存储单元的对齐方式未指定。

这使得您的结构大小(1 位 + 1 位 + 14 位)= 16 位 = 2 字节。

注意:这里不考虑结构填充。


Edit:

As per C++14标准,第 §9.7 章,

形式的成员声明符

identifieropt attribute-specifier-seqopt: constant-expression

指定一个位域;它的长度由冒号与位字段名称分开。 [...] 类对象中位域的分配是 实现定义的。位字段的对齐是实现定义的。位字段被打包到一些可寻址的分配单元中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有无符号短整数的结构的大小 的相关文章

  • 如何使用.NET Core(FtpWebRequest)通过squid代理通过FTP获取文件?

    根据https learn microsoft com en us dotnet api system net ftpwebrequest proxy view netcore 3 1 https learn microsoft com e
  • 如何在 C# 中知道 PID 和 VID 来发现虚拟 COM 端口名称

    如果我知道 PID 和 VID 我会尝试找到查找 COM 端口名称的正确方法 到目前为止 我写了解决方法 但我不相信没有更优雅和正确的方法 顺便说一句 我知道我可以使用 REGEX 编写此代码只是为了测试解决方法 我知道还有很大的改进空间
  • 如何重命名序列化对象列表后生成的 XML 属性

    我正在序列化对象列表List
  • C# 测试活动的互联网连接。 Ping google.com

    C 2008 我正在使用此代码来测试互联网连接 因为我的应用程序必须登录到网络服务器 但是 如果用户互联网连接失败或电缆被拔出 我必须通知用户 Ping www google com to check if the user has a i
  • 使用空函数调用 hana::is_valid 的用途是什么?

    Boost Hana https www boost org doc libs 1 61 0 libs hana doc html index html offers boost hana is valid https www boost
  • 为什么这个 oracle 批量插入不起作用?

    我正在尝试将一些数据批量插入到 oracle 数据库中 我按照文档中的示例进行操作 this DataBaseAccess new OracleConnection connString var dataAdapter new Oracle
  • WPF Dispatchertimer 延迟反应/冻结

    在我的 WPF 应用程序中 我使用 3 个不同的 DispatcherTimers 一种是用于显示当前时间 一种是每 5 秒运行一次数据库查询 第三个每 1 秒刷新一次自定义按钮的值 当我的程序运行时 有很多延迟 冻结 例如 时间开始正确计
  • 增量决策树 C++ 实现

    有谁知道决策树分类器的增量实现吗 这样 当您将新实例添加到训练集中时 它可以根据现有决策树分类器以低计算量并尽可能快地生成最佳决策树分类器 换句话说 我有一个最优决策树分类器集A 其中命名为T 1 现在我想添加实例X to set A并找到
  • 为什么将 char 传递给函数会改变它在 c 中的值?

    我目前正在关注本作业簿 http www cs bham ac uk exr lectures opsys 10 11 lectures os dev pdf关于构建操作系统 我的目的是写一个64位内核 我已经在文本模式下加载 内核 代码并
  • 我要恢复我的记忆!我怎样才能真正处理一个控件?

    我正在制作一个应用程序 它创建大量的窗口控件 按钮和标签等 它们都是通过函数动态生成的 我遇到的问题是 当我删除控件并处置它们时 它们不会从内存中删除 void loadALoadOfStuff while tabControlToClea
  • 试图使用加密来混淆我的项目打破了它

    我试图尝试不同的混淆选项 为了做到这一点 我首先尝试了加密货币 以下是我遵循的步骤 打开加密向导并选择一些选项 选择我的解决方案文件 完成向导后 我看到有些 Dll 被很好地混淆了 但我的项目现在无法构建 我注意到的两件事是 我的文件夹中有
  • 如何在Azure功能中添加razor视图文件?

    我正在创建一个应用程序 它是 azure 函数项目 我想在该项目中使用 Razor 视图 我应该在 azure 函数中使用任何模板引擎吗 得益于一些方面的进步剃刀之光项目 https github com toddams RazorLigh
  • Identity Server 4:添加访问令牌的声明

    我正在使用 Identity Server 4 和隐式流 并且想要向访问令牌添加一些声明 新的声明或属性是 tenantId 和 langId 我已将 langId 添加为我的范围之一 如下所示 然后通过身份服务器请求 但我也获得了tena
  • 三种 System.Drawing 方法表现出缓慢的绘制或闪烁:解决方案?或其他选择?

    我正在通过 System Drawing 进行一些绘图 但遇到了一些问题 我将数据保存在队列中 并将该数据绘制 绘制 到三个图片框中 此方法填充图片框 然后滚动图形 所以不要在以前的绘图上绘制 并且逐渐看起来更混乱 我找到了两种绘制图表的解
  • C++:LPWSTR 在 cout 中打印为地址

    我有一个类型变量LPTSTR 我打印到std cout with lt lt 在 ANSI 系统中 不知道它是在哪里确定的 它工作得很好 它打印了字符串 现在 在 Unicode 系统中 我得到的是十六进制地址而不是字符串 那么 为什么LP
  • Request.Form 和 Request.QueryString 之间的区别?

    有人可以告诉我两者之间的确切区别吗Request Form and Request QueryString 我知道一个区别 比如 如果HTTP请求方式为POST 则用户提交的数据在申请表 收藏 如果HTTP请求方法是GET 则用户提交的数据
  • 如何在asp.net core 6中注入IConfiguration

    web api 应用程序中不再有 Startup cs 我们以前可以注入IConfiguration进入那个Startup class public class Startup public Startup IConfiguration c
  • 如何创建和使用类箭头运算符? [复制]

    这个问题在这里已经有答案了 因此 在到处研究之后 我似乎找不到如何创建类箭头运算符 即 class Someclass operator gt 我只需要知道如何使用它并正确使用它 它的输入是什么 它返回什么 我如何正确地声明 原型化它 运算
  • C# 3.0 中自动属性和公共字段的区别

    我无法理解为什么 C 3 0 中存在自动实现的属性语言功能 当你说的时候有什么区别 public string FirstName than public string FirstName get set 因为它们在生成的 IL 代码 和机
  • 用于 nmap 输出的 C++ xml 解析器

    我是 nmap 的新手 我在 nmap 教程中看到 https nmap org book man output html https nmap org book man output html oX 选项可用于获取 xml 格式的 nma

随机推荐

  • 使用 Microsoft 托管代理执行构建定义时出现“运行其他请求问题”

    我收到的错误消息是Error The agent request is not running because all potential agents are running other requests Current position
  • Spring框架上的多线程(或异步)计算

    我正在学习Spring框架 它非常棒 我想使用JAVA多线程 但不知道如何使用Spring框架 这是服务代码 StudentService java public List
  • 在 vim 中使用 xclip, 复制到剪贴板

    我在 Ubuntu 中有 vim 7 2 clipboard xterm clipboard 可以看到它不支持剪贴板 所以我想编写一个 vim 小脚本 使用 xclip 工具将视觉选定的文本复制到剪贴板中 你知道 xclip 工具的工作原理
  • 读取和写入 ANSI 格式的文本

    请看下面的代码 import java io public class CSVConverter private File csvFile private BufferedReader reader private StringBuffer
  • Python3 从同级目录导入模块/包

    这是我的代码目录结构 root proj1 module1 py init py sub proj1 module2 py init py proj2 module3 py 如果我想将代码从 module2 py 导入到 module3 p
  • 指向空对象的引用[重复]

    这个问题在这里已经有答案了 我看到了这个讨论 检查 C 中的 null 对象 https stackoverflow com questions 2099882 checking for a null object in c我很惊讶没有人谈
  • jQuery AutoComplete,自定义返回数据

    我正在尝试创建一个自动完成框 并且由于返回自定义数据而遇到问题 我似乎无法让它填充自动完成框 这是数据 JSON user id 1 user name jarru user id 2 user name harryq user id 3
  • 在 WooCommerce 中获取并显示所选变体 SKU

    我的代码适用于简单的产品类型 但不适用于 WooCommerce 中的可变产品 add shortcode product sku div wc product sku div function wc product sku div glo
  • Laravel 路由参数与 post 路由 vs post 参数

    路由参数应该只用于获取 删除请求吗 用户可以加入挑战 我希望为此拥有一个 API 端点 这个可以吗 Route post challenge challenge join UserController joinChallenge 或者我应该
  • fetch api 无法加载,不支持 url 方案“文件”

    我尝试使用fetch在本地主机上 但它不起作用 这是我的代码
  • 如何以动画方式删除使用 ForEach 循环创建的视图,并从 SwiftUI 中的 ObservableObject 获取其数据

    该应用程序具有以下设置 我的主视图使用 SwiftUI 创建标签云ForEach环形 这ForEach从获取其数据 Published的数组ObservableObject called TagModel 用一个Timer 每三秒Obser
  • 我是否将图像资源存储在公共或reactJS中的src中?

    我正在为我的应用程序使用 React 我有一个div我想要一张背景图片 但我无法让它显示 当我将它包含在src文件夹为myapp src bgimage png它工作得很好 但我听说我应该将它包含在名为的文件夹中images在根级别所以它是
  • 非恢复除法算法

    有谁知道使用非恢复除法除法无符号二进制整数的步骤 很难在网上找到任何好的资源 i e if A 101110 and B 010111 我们如何找到A divided by B在非恢复分裂中 每个步骤中的寄存器是什么样的 Thanks 我的
  • 指向泛型类型的指针

    在将给定的高效的基于指针的哈希图实现转换为通用哈希图实现的过程中 我偶然发现了以下问题 我有一个代表哈希节点的类 哈希映射实现使用二叉树 THashNode
  • 如何衡量编程语言的受欢迎程度?

    从此以后question https stackoverflow com questions 1311981 use of different net languages 我有兴趣了解如何衡量任何和所有编程语言的受欢迎程度 作为专业的开发者
  • Spring连接池[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Qt Creator 和主窗口背景图像

    我想添加图像作为主窗口的背景 添加此背景图片的最佳方式是什么 主窗口的其余部分必须是透明的 我想这样做QtCreator编辑器 因此 对于此组件 没有代码 您可以将背景图片添加到您的MainWindow通过执行以下操作 创建一个QPixma
  • 我无法使用 SNICallback

    我无法管理使用 SNICallbackcreateServer功能 当我尝试以下代码时 出现错误 Missing PFX or certificate pricate key 我该如何解决这个问题 var fs require fs tls
  • 如何将数据转换为矩阵格式

    我已通过 read csv 将原始数据 10000 行和 392 列 导入到 R 中 我想知道如何将其转换为矩阵格式 非常感谢您的帮助 您的问题可能会迁移到 StackOverflow 不过 答案比较简单 我会提供 read csv 会生成
  • 具有无符号短整数的结构的大小

    我在浏览我们的一份组织数据文档时发现了以下代码 struct A unsigned short int i 1 unsigned short int j 1 unsigned short int k 14 int main A aa int