include <stdio.h>
struct Bit {
unsigned int a:5;
unsigned int :2;
unsigned int b:1;
unsigned int :0;
unsigned int c:2;
unsigned int :2;
unsigned int d:4;
unsigned int e:8;
};
void main(void) {
printf("%d\n",sizeof(struct Bit)/sizeof(unsigned int));
} //输出是2, 为什么?
感觉楼上都说的貌似不太对。
struct
的sizeof
要注意两点:1. 建立满足位数要求的整数个
unsigned int
空间,最少为1
个unsigned int
2. 不能跨越两个
unsigned int
存储一个标示,可以用语句unsigned int:0
强制使用下一个unsigned int
所以,sizeof(struct Bit)的value是2*unsigned int