又是c语言里的

#include<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",... #include <stdio.h>

union pw

{ int i; char ch[2];

}a;

main()

{ a.ch[0]=13;

a.ch[1]=0;

printf("%d\n",a.i);

}

程序的输出结果是(注意:ch[0]在低字节,ch[1]在高字节)______。
这个答案 是13,为什么?什么又 低字节 和 高字节 啊?
展开
 我来答
史珍襄
2010-03-14 · TA获得超过257个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:258万
展开全部
联合体数据类型,大小为占用空间最多的变量的大小,这里就int 和 char [2],现在int一般为4字节大小,所以a.i大小为4,a.ch大小为2,选最大的就是a的大小了.
即a的大小为4,如果我们把a在内存中的安排从高地址到地址依次表示为bit0,bit1,bit2,bit3,一般在电脑里数据都按从高地址往低地址存数据,而且还是先存低位的数据,这里假设a.i=0x789ACDEF,则bit0=0xEF,bit1=0xCD,bit2=0x9A,bit3=0x78,同样,a.ch[0]=bit0,a.ch[1]=bit1,所以如果a.ch[0]=13;a.ch[1]=0;则就等于是bit0=13,bit1=0,但bit2,bit3为多少是不确定,这里我们如假设bit2=bit3=0,则a.i就是等于13了.
当然也许这里的int就是2字节的,那么也就没有bit2和bit3了.结果就更是13了

=================
我在我电脑上把代码改成:
#include <stdio.h>
union pw

{ int i; char ch[2];

}a;

int
main()

{

a.i = 0x12345678;
a.ch[0]=13;

a.ch[1]=0;

printf("%x\n",a.i);
return 0;
}

运行结果是:

1234000d
Press any key to continue

也验证了如上说法.
对了,低字节就是放在低位的字节,同样,高字节就是放在高位的字节,在上面的解说中,字节从低到高依次是:bit0,bit1,bit2,bit3,高低不是看那个字节在内存中是放在高地址还是在低地址,而是看它是作为数据的高位还是低位.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式