2 dabentudou dabentudou 于 2016.01.15 00:20 提问

若有如下定义,则 printf(“%d\n”, sizeof(them));的输出是

若有如下定义,则 printf(“%d\n”, sizeof(them));的输出是( )
typedef union { long x[2];int y[4];char z[8];} MYTYPE;MYTYPE them;

①32 ②16 ③8 ④24

4个回答

caozhy
caozhy   Ds   Rxr 2016.01.15 00:34
已采纳

选③8

CSDNXIAOD
CSDNXIAOD   2016.01.15 00:21
91program
91program   Ds   Rxr 2016.01.15 08:39

union 是联会体,取最大的一个变量。此例为 long x[2];
如果是 32 位的系统答案为 8;但如果是 64 位系统,可能就是 16;再加上不同的编译器,对 long 数据类型的长度也可能不相同!所以,此问题出的不严密,至少也要说明一下是多少位的系统吧。

yamizZ
yamizZ   2016.01.15 14:30

看多少位操作系统吧,因为union分配内存长度为最长成员所占字节数,32位下long为4,64位下为8

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!