问题
单项选择题
下列程序的输出结果是_______。 #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。