若有以下说明和定义: union dt { int a; char b; double c;} data; 以下叙述中错误的是( )。

admin2009-01-15  28

问题 若有以下说明和定义:    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可以作为函数的实参

答案4

解析 共用体成员a,b,c共占用同一个内存空间,所以data的每个成员起始地址都相同;共用体变量所占的内存长度等于最长的成员的长度,故变量data所占的内存字节数与成员所占字节数相等;由于各成员变量的类型不一致,所以它们的存储方式也不相同,整型占用2个字节的存储空间,double型占用8个字节的存储空间;data可以作为函数的实参,此时data作为一个地址进行地址传送;执行data.a=5;printf("%f\n",data.c);系统不能自动将整型变量转换为浮点型值,printf函数只是将内存中的数据以不同类型输出,而不能将内存中的整型数据自动转换为等值的浮点数,故选项C)错误。
转载请注明原文地址:https://kaotiyun.com/show/xmXp777K
0

最新回复(0)