急!跪求大虾指点c语言中关于位段和sizeof

来源:百度知道 编辑:UC知道 时间:2024/06/18 15:38:28
#include<stdio.h>
main()
{struct st {unsigned a:2;unsigned b:2;unsigned c:5;unsigned d:1;};
printf("%d",sizeof(struct st));
}
为什么结果是4,不理解
我算了一下,应该是2字节呀,怎么会是4呢

这个是结构体
{struct st {unsigned a:2;unsigned b:2;unsigned c:5;unsigned d:1;};
输出的是struct st的字段数就相当于
{int st {char a;char b;char c;char d};等等依次类推
每个分号代表一个结束符号如果你把他们分开看就容易了如:
struct st (unsigned a:2);
struct st (unsigned b:2);
.....
unsigned 就是没有符号的意思,他在这个题中只能算后面的A,B,C,D这4个字符,其余就不算的。
就这个样的他们的每一个都代表一个字段最后输出的是总字段数。
如果你是不了解unsigned,还是sizeof个的话,你可以留言我在给你解释啊呵呵。