请教一道c编程题,以下程序在16位编译系统上的输出结果是什么?为什么?
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