
【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
这么多次的赋值运算,我已经晕了,不知道里面存的是什么了。。。
就算知道了,我也不会做。。
请大神们一定要帮帮我啊,给出详解,谢谢 展开
下面程序运行后的结果是_______.
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
这么多次的赋值运算,我已经晕了,不知道里面存的是什么了。。。
就算知道了,我也不会做。。
请大神们一定要帮帮我啊,给出详解,谢谢 展开
展开全部
共用体就是享用同一块内存
在此例中
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
在此例中
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|
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询