#include <stdio.h>
union Un
{
short s[7];
int n;
};
int main()
{
printf("%d\n", sizeof(union Un));
return 0;
}答案解析
结构体向int对齐,7个short一共是14字节,对齐后是16字节。n是单独的4字节,由于是union,所以n与s共用空间,只取最长的元素,故占用16字节。
在X86下,有下列程序
#include<stdio.h> int main() { union { short k; char i[2]; }*s, a; s = &a; s->i[0] = 0x39; s->i[1] = 0x38; printf(“%x\n”,a.k); return 0; }
答案解析
union只有2字节,2字节的十六进制只有4位,而位顺序类似小端,低地址在低处,所以39是低地址,在低位,38在高位,所以是3839
版权声明:本文为Dingyuan0原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。