【发布时间】:2017-11-23 18:01:21
【问题描述】:
在下面的程序中,在结构中声明了未命名的位域成员。
#include <stdio.h>
struct st{
int : 1;
};
int main()
{
struct st s;
printf("%zu\n",sizeof(s)); // print 1
}
上面的程序打印输出1。
为什么sizeof(s) 打印1?
【问题讨论】:
-
你想打印什么?
-
因为它有 1 个字节大,我猜 ;)
-
@Bathsheba 嘿,看ideone.com/HcLohM
-
@Bathsheba,
sizeof(int)与标准无关。使用基本类型int声明位域对存储其值的存储单元的大小没有任何要求。 -
我很高兴今天起床抱怨完全理智地处理毫无价值的数据类型的 UB...
标签: c structure sizeof bit-fields