再问一道关于union的问题(一道基础题)
main()
{union{short i[2];
long k;
char c[4];}r,*p=&r;
p->i[0]=0x39;
p->i[1]=0x38;
printf("%x,%x,%x,%x\n",p->c[0],p->c[1],p->c[2],p->c[3]);
}
请给出答案,并说明为什么。
问题点数:20、回复次数:4Top
1 楼blue_coco(椰子)回复于 2002-09-11 15:41:29 得分 5
39 00 38 00
-------- --------
\|/ \|/
i[0] i[1]
39 00 38 00
--- --- --- ---
\|/ \|/ \|/ \|/
c[0] c[1] c[2] c[3]
Top
2 楼cwanter(亚玛逊河上的渔夫)回复于 2002-09-11 15:41:40 得分 5
39,0,38,0
r为4个字节,p->i[0]=0x39使第一个字节为0x39,p->i[1]=0x38使第三个字节为0x38。Top
3 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2002-09-11 16:10:33 得分 5
说明你对intel的x86内存中数据存储结构很感兴趣,并且很迷惑,呵呵Top
4 楼jfguo(jfguo)回复于 2002-09-11 16:18:39 得分 5
intel 系统为 little endian
所以会有上面的结果Top




