关于共用体...

来源:百度知道 编辑:UC知道 时间:2024/05/26 01:37:10
#include <iostream.h>
void main(void)
{ union example
{ struct {int x,y;}in;
int a,b;
}e;
cout<<sizeof(e.in)<<'\t'<<sizeof(e)<<endl;
e.a = 2;
e.b = 4;
e.in.x = e.a * e.b;
e.in.y = e.a + e.b;
cout<<e.in.x<<'\t'<<e.in.y<<endl;
}

为何x和y的值是16和32?

union example
{ struct
{int x,y;
}in;
int a,b;
}e;
in 中两个对象各占2字节 int定义的a,b各用2字节
所以一共占用2个字节 所有数据在同一个内存地址中
e.a=e.in.x=2
e.b=e.in.y=4
数据都被覆盖成了4
e.in.x = e.a * e.b;=4*4=16
e.in.y = e.a + e.b; =16+16=32