问题
单项选择题
已知字符0的ASCII码为十六进制的30,现有程序如下: #include <stdio.h> main() { union{unsigned char c;unsigned int i[4]; }z;z.i[0]=0x39;z.i[1]=0x36;printf("%c\n",z.c); } 此程序的输出结果是( )。
A.6
B.9
C.0
D.3
答案
参考答案:B
解析: 根据共用体的定义可知:共用体z的成员c和成员i[4]是共用着同一段内存空间,所以,当程序给z.i[0]赋值后,实际上共用体成员c的值也确定了,为0x39,所以在以字符方式打印时,打印结果应是ASCII码等于0x39的字符,即是9。