【发布时间】:2010-09-10 00:36:47
【问题描述】:
struct foo { unsigned x:1; } f;
printf("%d\n", (int)sizeof(f.x = 1));
预期的输出是什么,为什么?不允许直接取位域左值的大小。但是通过使用赋值运算符,我们似乎仍然可以获取位域类型的大小。
什么是“位域的字节大小”?它是保存位域的存储单元的大小吗?是bf占用的比特数四舍五入到最接近的字节数吗?
或者是构造未定义的行为,因为标准中没有任何内容可以回答上述问题?同一平台上的多个编译器给我的结果不一致。
【问题讨论】:
标签: c