请教一道c编程题,以下程序在16位编译系统上的输出结果是什么?为什么?

来源:百度知道 编辑:UC知道 时间:2024/06/06 21:00:10
main()
{union
{char ch[2];
int d;
}s;
s.d=0x4321;
printf("%x,%x\n",s.ch[0],s.ch[1]);}

21,43。
计算机存储数据时,数据的高位字节存在内存的高地址空间,低位字节存在内存的低地址空间。也就是说0x43是高位字节,存在了高地址空间,0x21是低位字节,存在了低地址空间。但数组中的元素是从低地址空间到高地址空间存放的,所以ch[0]在低地址空间,ch[1]在高地址空间,那么ch[0]的值是0x21,ch[1]的值是0x43