#include
main()
{ union
{ int i[4];
long k;
char c[6];
}a,*s=&a ;
s->i[0]=0x39;
s->i[1]=0x38;
printf(“%c\n”,s->c[0]);
}
A)5 B)3 C)6 D)9
竞赛题目,根本就不明白,求高人讲一下~~~谢了
其实,共同体的特点你应该知道吧:就是:所有的变量地址统一只有一个;长度为这个共同体中数据类型字节数最多的那个,这里是 int 类型,还有就是共同体的赋值问题,只有最后一次赋值是有效的,其他之前的赋值都会被最后一次赋值覆盖。所以,最后的值是c[2] 的值,应该是c{2}字符数组转换为ascii码的结果吧