C语言简单代码解读

来源:百度知道 编辑:UC知道 时间:2024/09/22 08:23:23
#include <stdio.h>
union
{
int i;
char x[2];
}a;

void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d",a.i);
}

请解释一下这个输出是怎么回事,a.i=266

内存中数组按低地址到高地址存储. x[0]为低位, x[1]为高位.
而i和x[2]公用内存地址.因此,x[0]和x[1]一起构成i的低16位.
连在一起就成了0x010a就是266

共用体占用的内存空间等于最长成员的长度,你定义的共用体最长长度为2字节,a.x[0]=10把10放在低八位a.x[1]=1把1放在高八位里,int读取的是两个字节,i读取到的是0000000100001010,换成十进制就是266了