永发信息网

#include<stdio.h> struct byte { int x; char y; }; union { int i[2]; long j; char m[2];

答案:2  悬赏:50  手机版
解决时间 2021-03-16 18:57
struct byte d;
}r,*s=&r;
main()
{
s->j=0x98765432;
printf("%x\t%x\n",s->d.x,s->d.y);
}
请问这个程序的结果是怎么得出来的???
最佳答案
首先,结果是“98765432     0”。
因为:
1. union  共用体是以内部成员占用空间最大的那个来分配内存空间。因此该共用体是以int i[2]的长度来申请内存(8个字节)
2. union  共用体中所有的成员的起始地址是一样的。
3. 赋值语句s->j=0x98765432; 使得共用体所申请的这段内存存放了一个long int 型的十六进制数,占4个字节,还剩4个字节,在初始化的时候默认值是0.
4. 所以在输出的时候,用s->d.x;寻址,那么就是读取该段内存的前4个字节(即0x98765432),而s->d.y;读取紧挨着的后一个字节,这个字节的值是0。
全部回答
如果int占2个字节,char a[2]占2个字节, i占2个,d占2个,所以选b 如果int占4个字节,那么因为字节对齐的缘故char a[2]占4个字节, i占4个,d占4个,就共占12个字节
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
衣服有老鼠屎尿怎么办
美利达自行车日照旗舰店地址在什么地方,想过
4号喜欢和7号一起玩,是因为4号互补吗
青白江中学地址在哪,我要去那里办事
win10创新者更新对绘图软件有影响吗
已知进货价,销售价和利润,求实际上赚多少,
一盒饼干主要围绕什么
京州市是不是省会城市
庖丁坊怎么去啊,有知道地址的么
山西运城到贵州凯里坐火车怎么走
我才19岁,可是为什么性欲那么旺盛
范记饼屋新阳新店地址有知道的么?有点事想过
今天有从嘉兴到西安的火车吗
信用卡第一次办十多天了还在申请已受理咋回事
卫生间小怎样装修好看
推荐资讯
熊猫是不是变态动物
美国战后初期推行冷战政策说明
.女生喜欢男生搂着她的腰还是牵她的手?
电信光猫电视的那根网线再加一个路由器后几个
造2悟空怎么打刑天啊,我27级
劳斯莱斯怎样链接蓝牙
炖鱼时不小心加了酸了的啤酒,结果很酸,鱼还
印象精品女装怎么去啊,有知道地址的么
迅雷的内网用户问题
还是在二次战役的时候,有一支志愿军的部队向
铝壳电机铸铁电机怎样区分
包皮手术后往外渗出液体纱布都湿了怎么办?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?