首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-05-24 
两个值竟然不相等,为什么typedef struct {char achar bint cchar d}ABCDtypedef struct {char achar

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

热点排行