问题 单项选择题

下列程序的输出结果是_______。
#include<stdio.h>
main()

union

int k;
char i[2];
*s,a;
s=&a;
s->i[0]=0x39;s->i[1]=0x38;
printf("%x\n",s->k);

A) 3839 B) 3938 C) 380039 D) 390038

答案

参考答案:A

解析: 在主函数定义了—个共用体变量a,及—个指向该变量的指针s。执行s->i[0]=0x39;s->i[1]=0x38;,将分别共用体的第—字节及第二字节存入十六进制数据0x39及0x38,由于在共用体中,变量共同占用存储空间,在输出s->k时,实际上就是输出开始写入的数据,而对于PC机,在存放血型数据时,低位在前,高位在后,故本题输出为3839。

综合
判断题