【c语言共用体】里面嵌套有结构体,求详解。高分悬赏。谢谢

题目下面程序运行后的结果是_______.voidmain(){unioneg1{intc;intd;struct{inta;intb;}out;}e;e.c=1;e.d... 题目 下面程序运行后的结果是_______. void main() { union eg1 { int c; int d; struct { int a; int b;} out; } e; e.c=1;e.d=2; e.out.a=e.c*e.d; e.out.b=e.c+e.d; printf(“%d,%d\n”,e.out.a,e. 正确答案 4,8这么多次的赋值运算,我已经晕了,不知道里面存的是什么了。。。就算知道了,我也不会做。。请大神们一定要帮帮我啊,给出详解,谢谢
下面程序运行后的结果是_______.

void main()

{ union eg1

{ int c;

int d;

struct { int a; int b;} out;

} e;

e.c=1;e.d=2;

e.out.a=e.c*e.d;

e.out.b=e.c+e.d;

printf(“%d,%d\n”,e.out.a,e.

正确答案

4,8
这么多次的赋值运算,我已经晕了,不知道里面存的是什么了。。。
就算知道了,我也不会做。。
请大神们一定要帮帮我啊,给出详解,谢谢
展开
 我来答
谢应宸
2015-01-05 · TA获得超过2640个赞
知道大有可为答主
回答量:2731
采纳率:66%
帮助的人:2316万
展开全部
共用体就是享用同一块内存
在此例中
e的大小为最长元素的大小,也就是结构体out的大小,共两个int,假设此处int为4字节
e.c和e.d和e.out.a占用同一块内存,即低4字节的内存,a.out.b占用高4字节内存
然后e.c=1;e.d=2;
e.c和e.d和e.out.a都为2
e.out.a=e.c*e.d = 2*2 = 4;
那么e.c和e.d和e.out.a都变成了4
e.out.b=e.c+e.d = 4+4 = 8
追问
即低4字节的内存,a.out.b占用高4字节内存

这句话什么意思啊?
我们老师没讲过低位高位,书上也没有,因为我们不是计算机专业的。能给我详细解答一下吗?谢谢
追答
你可以理解为先后顺序,比如此例中的struct { int a; int b;} out;
其中out.a的地址在前面,out.b的地址在后面,与.a相差一个int的距离。
而由于共用体的关系,e.c e.d 和e.out.a的内存地址相同
|e.c | |
|e.d | |
|e.out.a|e.out.b|
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式