第1个回答 2015-10-07
这个和位域没关系,sizeof()一个结构体的时候 ,它有一个对齐的。
struct test {
int i;
char x;
}
printf("%d\n" , sizeof(test) ; //这时候会输出8
当你使用位域的时候,它会输出1, 这就牵涉到一个对齐策略的问题,glibc中对齐的策略是2^n
第2个回答 2013-02-18
char类型的位域,在使用位不超过8的时候占用的字节大小为1,超过8为2字节 你这个结构体总共用了6位,所以是1字节本回答被提问者采纳
第3个回答 2013-02-18
因为这个结构体或者说是位段总共只占用了一个char型的空间,所以sizeof当然是1了……
位段的定义char c1:1;表示把一个char型空间中的一个位分配给c1.
第4个回答 2013-02-18
错了,结构体的内存占用和类对象初始分配内存比较相近