王霄电影全集:高手帮我解释一下这个程序
来源:百度文库 编辑:中科新闻网 时间:2024/10/06 09:14:22
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吗?
{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