在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编译器在栈中未定义变量的初始值。