联合类型union定义与结构体类似,也可以定义不同的数据类型,不过,这些数据类型共用首地址,所以对其中一个赋值后,其他变量也就同时赋值了。
程序中只对联合中的数a赋值,然后,两个数组也被同时赋值了,输出的数据只不过是同一个数的不同形式。
当需要同一个数据以不同的数据类型输出时,可以采用联合类型。
#include "iostream"
using namespace std;
int main()
{
int num;
union xuexi{
int a;
char array[2];
short array1[2];
};
xuexi bailiang; //C语言应为:union xuexi bailiang,C++ 中定义变量时可省略关键字 union,struct,enum;
cout << "Please enter a number:" << endl;
cin >> bailiang.a ;
cout << endl << bailiang.a << endl;
cout << bailiang.array[0] << ends;
cout << bailiang.array[1] << ends << endl;
cout << bailiang.array1[0] << ends;
cout << bailiang.array1[1] << ends;
运行结果为:
12345分解成两个16进制的数是 0x30 和0x39,也就是字符“0”和字符“9”。