#include<stdio.h>
union un
{
int i;
char c[2];
}
main()
{
union un x;
x.c[0]=10;
x.c[1]=1;
printf("\n%d",x.i);
}
因为内存字节序是低字节在前,高字节在后
union中所有变量共享内存块
所以c[0]=10,c[1]=1后,union的内存存储的四个字节内容分别是 0x0A 0x01 0x00 0x00,那么转换为int值就是266。其中0x01是高字节,相当于256,然后0x0A是低字节,因此int值就是256+10 = 266