设有以下定义    union data    {  int  d1;    float  d2;  }demo;    则下面叙述中错误的是

admin2009-06-20  34

问题 设有以下定义    union data    {  int  d1;    float  d2;  }demo;    则下面叙述中错误的是

选项 A、变量demo与成员d2所占的内存字节数相同
B、变量demo中各成员的地址相同
C、变量demo和各成员的地址相同
D、若给demo.d1赋99后,demo.d2中的值是99.0

答案D

解析 联合体的所有成员共占同一段内存,所以联合体变量的长度与它的最长成员所占长度…致,本题中float所占内存字节数为4,而 int类型在TurboC 2.0中是占2字节、在VisualC++6.0中占4字节,所以int类型所占内存字节数不会超过float,那demo就与成员d2所占字节数是相同的,选项A的说法正确。联合体的所有成员的首地址都是相同的,和联合体变量的地址一致。故选项B和C都是正确的。由于int类型数据和float类型数据在内存中的存放格式是不一样的,所以给d1赋99后,d2中不会得到99.0这个值。故选项D不正确,答案应该选择D。
转载请注明原文地址:https://jikaoti.com/ti/I5I0FFFM
0

最新回复(0)