两个值竟然不相等,为什么
typedef struct {
char a;
char b;
int c;
char d;
}ABCD;
typedef struct {
char a;
char b;
char d;
int c;
}ABDC;
printf("%d,%d",sizeof(ABCD),sizeof(ABDC));
结果是一个12,一个8.
太奇怪了,这是为什么?
----------------------------
[解决办法]
编译器为了保证的数据4字节对齐功能做的
前一个结构体,前2个成员之和小于4字节,第3个是4字节,所以占8字节,最后一个成员虽然是char,但是为了对齐,又占了4个字节,所以总共12个字节
后一个结构体,前3个成员之和不到4字节,按4字节记,第4个成员4字节,所以是8字节