有如下程序段#include "stdio.h"typedef union{ long x[2]; int y[4]; char z[8];}atx;typedef

12 查阅

有如下程序段#include "stdio.h"typedef union{ long x[2]; int y[4]; char z[8];}atx;typedef struct aa { long x[2]; int y[4]; char z[8];} stx;main(){ printf("union=%d,struct aa=%d\n",sizeof(atx),sizeof(stx));}则程序执行后输出的结果是A.union=8,struct aa=8 B.union=8,struct aa=24C.union=24,struct aa=8 D.union=24,struct aa=24

参考答案:

B本题主要考查结构体和联合体所占的存储空间。在本题程序中,首先定义了一个联合体,联合体中具有三个成员,它们的类型分别为长整型、整型和字符型。按照C语言的规定,这三种类型的变量所占的存储空间分别为4个字节、2个字节和1个字节。但由于定义的成员都是数组,长整型数组的大小为2,那么需要的总空间为8个字节;整型数组的大小为4,那么需要的总空间为8个字节;字符数组的大小为8,需要的总空间也为8个字节,因此,可以看出三个成员需要的存储空间一样,都为8。根据联合体变量中的所有成员共享存储空间,联合变量的长度等于各成员中

计算机二级