问题
单项选择题
若有以下说明和定义:
union dt
int a; char b; double c; data;
以下叙述中错误的是( )。
A) data的每个成员起始地址都相同
B) 变量data所占的内存字节数与成员c所占字节数相等
C) 程序段:data.a=5; printf("%f\n",data.c);输出结果为5.000000
D) data可以作为函数的实参
答案
参考答案:C
解析: 共用体成员a,b,c共占用同一个内存空间,所以data的每个成员起始地址都相同;共用体变量所占的内存长度等于最长的成员的长度,故变量data所占的内存字节数与成员所占字节数相等;由于各成员变量的类型不一致,所以它们的存储方式也不相同,整型占用2个字节的存储空间,double型占用8个字节的存储空间;data可以作为函数的实参,此时data作为一个地址进行地址传送;执行data.a=5;printf("%f\n",data.c);系统不能自动将整型变量转换为浮点型值,printf函数只是将内存中的数据以不同类型输出,而不能将内存中的整型数据自动转换为等值的浮点数,故选项C)错误。