我将你的程序中添加了一些输出语句你可以从中得到答案:
-------------------------------------------------
#include
union pw
{
int i;
char ch[2];
}a;
main()
{
unsigned char * p;
int i;
a.ch[0]=13;
a.ch[1]=0;
p=(char *)(&a);
printf("%d\n",a.i);
for(i=0;i<=3;i++)
{
printf("\na.[%d]=[%d](int),=[%c](char)\n",i,*p,*p);
p++;
}
}
==============================================
运行结果:
==============================================
218103808
](char)13](int),=[
a.[1]=[0](int),=[](char)
a.[2]=[0](int),=[](char)
a.[3]=[0](int),=[](char)
============================
其中输出的结果218103808的二进制为:1101000000000000000000000000
就是13的二进制码(1101)后面跟三个字节的0
============================
补充:
================
以上结果是在IBM POWERPC SERVER(高位低字节机)上测试的
如果你在你的PC机(高位高字节机)上测试可能结果回不一样.
这是个什么程序啊!!!i又没有赋值,肯顶是0,那结果应该是13。
但是程序还有点小问题。。