那位编程高手可以帮我看看以下一段程序的输出结果 是什么 啊?多谢了!

来源:百度知道 编辑:UC知道 时间:2024/06/20 14:00:43
main()
{
union{
int a[2];
long k;
char c[4];
}un,*sp=&un;
sp->a[0]=0x39;
sp->a[1]=0x38;
printf("%1x\n",sp->k);
}
此题为选择题:
A 3938 B 3839 C 390038 D 380039
最好能给分析一下解题过程,答案C是不对的》
答案 A 也是不对的。
哪位高手能给出合理的分析啊?

39

你这种题目完全都没什么意义,他和编译器的关系很大的,在tc下,int为16为,long为32位,加上tc对数据的处理,答案跑一下应该是D吧,但在gcc下,int和long都为32位,结果为39。至于具体为什么为380039,我也不清楚,2块内存,一个放的39 ,一个放的38 ,2个合起来输出,tc输出的是380039,但别的编译器可能都输出的奇奇怪怪的。

C

A