typedef union {long i; int k[5]; char c;}DATE;
struct data { int cat; DATE cow; double dog;} too;
DATE max;
则语句 printf("%d",sizeof(too)+sizeof(max));的执行结果是:______
答案:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20。
data是一个struct, 每个变量分开占用空间. 依次为int4 +DATE20 + double8 = 32.
所以结果是 20 + 32 = 52.
3.union 共用体的字节对齐情况类似,共用体的自身对齐按成员的最大元素字节对齐;
即typedef union {long i; int k[5]; double d;}DATE; 按8字节对齐。
struct data { int cat; DATE cow; double dog;} too; 也将变成按8字节对齐。