奇迹召唤3.2万点加点:高手帮我解释一下这个程序

来源:百度文库 编辑:高考问答 时间:2024/04/29 02:30:24
main()
{union exx
{int a,b;
struct
{int c,d;}lpp;
}e={10};
e.b=e.a+20;
e.lpp.c=e.a+e.b;
e.lpp.d=e.a*e.b;
printf("%d,%d\n",e.lpp.c,e.lpp.d);
}
结果输出60,3600
而我认为应该输出40,300。这里的10不是赋给e.a吗?

a初始为10,所以e.b=e.a+20; 后,a和b均为30(因为是共用体);
后面就顺理成章c为60,d为3600