永发信息网

union a {int a; char b[2];}x; main() {x.a=3; x.b[0]=1; x.b[1]=2; printf("%d%d%d",x.a,

答案:2  悬赏:30  手机版
解决时间 2021-02-15 19:39
union a {int a; char b[2];}x; main() {x.a=3; x.b[0]=1; x.b[1]=2; printf("%d%d%d",x.a,x.b[0],x.b[1])
最佳答案
union的内存取决于其中成员所占内存最大的内存量,在这个union中a有int和char[2],假设int是4位的,那么他就是4字节内存,而union中的成员是共享内存的。
1 2 3 4字节都是int的,
3 4是char[2]的,char[0]占4,char[1]占3(当然也是int的)
原来x.a=3使得内存变成了0x00000003(16进制)而在改变了3和4之后,int的内存也就变成了0x00000201(16进制)所以输出x.a的时候,是513追问为什么要从十进制变成十六进制?x.a=3使得内存变成了0x00000003(16进制)追答这只是表达方式而已,数值是没有变化的,在计算机内存当中都是0或者1,用16进制可以让位数少点方便表示。同样是3 32位内存的话需要32位来表示,16进制就只需要8位而已。。其实本质没区别的。
全部回答
union a
{
int a;
char b[2];
}x;
x.a=3; // 由于 a,b 是联合体, a 实际对应的4个字节值为: 3, 0, 0, 0;
x.b[0]=1; // a 实际对应的4个字节值为: 1, 0, 0, 0; 也就是 a = 0x00000001
x.b[1]=2; // a 实际对应的4个字节值为: 1, 2, 0, 0; 也就是 a = 0x00000201
printf("%d%d%d",x.a,x.b[0],x.b[1]) // 输出 51312
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
泰迪可以吃面条吗
【对对子】汗水对什么?(对对子)
我是女生,但是在性幻想中把自己当做男生怎么
我有一台TCL彩电开机灰屏,CPU以经更换,但是
聚香缘烧烤城我想知道这个在什么地方
高压77低压55正常不
优胜教育NO.328怎么去啊,有知道地址的么
一只鹭鸶阅读答案结合你的实际,谈谈你读了,这
加速度随时间均匀的变化的运动叫什么谢了
请问大家,郑州大学英语专业研究生哪些导师教
红旗谷高尔夫酒店-林地宴会厅我想知道这个在
夏季来临,食物容易变馊而罐头食品在很长时间
踩小人,踩小人,踩小人
单缸柴油机连杆螺丝烧死怎么卸掉
上海2017高考480分能进什么大学
推荐资讯
【bog】LNG、BOG、EAG英文全称是什么?
ebay美国站点怎样开通
上海中亚会所夜总会生意最好?
下列有关车船税的表述中,不正确的有(  )
鼎城区常德萌宝爱潮地址在什么地方,想今天过
光大证券的客户服务专员是干什么的?
小叶紫檀人工林与野生林的区别
空港新苑刘家台社区西门地址在哪,我要去那里
做手术后能吃香菜吗
十七天的小孩一天一夜没拉大便正常吗
急~~高分~~温州医学院附属第二医院 拆线 步骤
boxers or briefs?是什麽意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?