#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