在union聯合體中,所有的變量是公用一個內存的,即以最大內存變量作爲整個union的內存空間進行申請。同時也服從內存對其的策略,即如果同時又一個char和一個int類型,則佔據4個字節的內存空間,最低字節就是char所對應的值,而如果單純的只給char變量賦值,則int型變量的高三個字節是未定義的。
#include<iostream>
using namespace std;
union CC
{
int c;
char m;
};
int main()
{
cout<<"*************************"<<endl;
CC x;
x.m=0xAA;
cout<<hex<<(x.c)<<endl;
cout<<int('a')<<endl;
system("pause");
return 0;
}
輸出爲CCCCCCAA,其中CC表示VS2010編譯器在棧中未定義變量的初始值。