#include<iostream>
using namespace std;
union
{
unsigned char a;
unsigned int i;
}u;
int main()
{
u.i = 0xf0f1f2f3;
cout<<hex<<u.i<<endl;
cout<<hex<<int(u.a)<<endl;
return 0;
}
程序的输出结果为:
f0f1f2f3
f3
定义了共用体变量后,系统为共用体变量开辟一定的存储空间。由于共用体变量先后存放不同的类型的成员,系统开辟的共用体变量的存储单元的字节数即为最长的成员需要的字节数。
例如源码中,定义了u.i,和u.a,系统只开辟了一个int类型所占的空间,内存中数据低位存入低字节,高位字节存入高地址,而数据的地址采用它的低地址来表示。
u.i f
0
f
1
f
2
u.a f
3