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.
共用体就是享用同一块内存
在此例中
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.ce.d = 22 = 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