#include <stdio.h>
int main()
{
struct value
{
int bit1:1;
int bit2:4;
int bit3:4;
} bit;
printf ("%d\n", sizeof(bit));
return 0;
}
Tc / Tc ++上的输出:
2
Linux下的输出:
4
我知道我错过了一些比特字段的概念。
答案 0 :(得分:2)
结构的sizeof
与所有元素的大小总和不同 - 特别是位域的情况。
通常,结构需要填充到一定的大小和对齐。 (显然在Tc / Tc ++上是2,在Linux中是4。)
因此虽然只使用了9位,但它被填充到字大小。
编辑:
请注意,C标准未指定填充量。因此,您从两个不同的编译器得到不同的结果。
答案 1 :(得分:1)
您的结构大小向上舍入到机器字。想一想 - 它如何在内存或寄存器中存储(和寻址)?