美国制裁伊朗中国躺枪:这个C程序输出是多少?

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 15:28:02
# include "stdio.h"
union pw
{
int i;
char ch[2];
}a;

main()
{
a.ch[0]=13;
a.ch[1]=0;
print("%d\n",a.i);
}

能否说明一下为什么?

我将你的程序中添加了一些输出语句你可以从中得到答案:
-------------------------------------------------
#include <stdio.h>
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。
但是程序还有点小问题。。