一道令人费解共用体题目!高手帮忙!
main(){
union
{
char ch[2];
int d;
}s;
s.d=0x4321;
printf("%x,%x\n",s.ch[0],s.ch[1]);
}
在16位编译系统上,程序执行后的输出结果是:21,43
提问:为什么数组ch中ch[0]占低位,ch[1]占高位?
----------------解决方案--------------------------------------------------------
因为它是共用体,共同占用同一个内存.
----------------解决方案--------------------------------------------------------
但是我不理解的是:
0x4321应该是21占低八位,43占高八位;
数组ch不应从左向右取其中的字符元素么?
如果如此,应先取到高八位的43才对???
----------------解决方案--------------------------------------------------------
以下是引用kate333333在2007-2-16 16:50:52的发言:
main()
{
union
{
char ch[2];
int d;
}s;
s.d=0x4321;/*表示16进制*/
printf("%x,%x\n",s.ch[0],s.ch[1]);/*int是占用二个字节内存,char占用一个字节,而char ch[2]实际占用二个节内存,根据共用体特性和计算机特性(按人书写习惯),这就这样分配*/
}
在16位编译系统上,程序执行后的输出结果是:21,43
提问:为什么数组ch中ch[0]占低位,ch[1]占高位?
main()
{
union
{
char ch[2];
int d;
}s;
s.d=0x4321;/*表示16进制*/
printf("%x,%x\n",s.ch[0],s.ch[1]);/*int是占用二个字节内存,char占用一个字节,而char ch[2]实际占用二个节内存,根据共用体特性和计算机特性(按人书写习惯),这就这样分配*/
}
在16位编译系统上,程序执行后的输出结果是:21,43
提问:为什么数组ch中ch[0]占低位,ch[1]占高位?
0
----------------解决方案--------------------------------------------------------
仍有疑问
见上楼内容 ----------------解决方案--------------------------------------------------------
哦,好吧
小弟拜谢了
----------------解决方案--------------------------------------------------------