#include <stdio.h>
union U
{char st[4];
int i;
long l;};
struct A
{int C;
union U u;}a;
int main(void)
{
printf("%d",sizeof(a));
return 0;
}
8个字节.
现在一般的32位编译器是char 1,int 4,long 4
union U 是4个字节
如果改成char st[5];char st[6];char st[7];char st[8];的话就会是12个字节,因为有内存对齐问题
之所以正确答案是6,因为用的是16位的C语言编译器,比如TC,那里面int是2个字节.long是4个字节,但是在32位的情况下是int是4字节.
还有我没有在TC里测试,可能也存在内存对齐问题.6也不一定是对的,而且和具体的编译器实现都是有关系的,这种题的意义不大,你只要用一下sizeof(a),就可以求出了.
温馨提示:答案为网友推荐,仅供参考