C中的位段解释

来源:百度知道 编辑:UC知道 时间:2024/06/07 17:02:11
typedef struct
{
int a:2;
int b:2;
int c:1;
char d;
}s

为何cout<<sizeof(s)输出为8 难道int型和char型不能位于同一个整型长度内

字节对齐问题,struct中占空间最大的是int型(4字节),因此编译器要保证整个struct大小为sizeof(int)的整数倍,因此为8。

不同的编译器和不同的机器对不同类型的长度分配是不一样的。
你的程序在我的机器里会输出4 :-)