问题 单项选择题

已知字符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。

单项选择题
填空题