读书人

两个值竟然不相等为什么解决办法

发布时间: 2012-05-24 11:55:41 作者: rapoo

两个值竟然不相等,为什么
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字节

读书人网 >C语言

热点推荐