若有如下定义,则 printf(“%d\n”, sizeof(them));的输出是( )
typedef union { long x[2];int y[4];char z[8];} MYTYPE;MYTYPE them;
①32 ②16 ③8 ④24
选③8
union 是联会体,取最大的一个变量。此例为 long x[2];
如果是 32 位的系统答案为 8;但如果是 64 位系统,可能就是 16;再加上不同的编译器,对 long 数据类型的长度也可能不相同!所以,此问题出的不严密,至少也要说明一下是多少位的系统吧。
看多少位操作系统吧,因为union分配内存长度为最长成员所占字节数,32位下long为4,64位下为8