联合union的特征包括:
(1)不能直接对联合内的元素进行初始化;
(2)某个时候只能使用其中一个元素;
(3)分配给union的size是其中最大元素的size。
PS:对union中的某元素赋值,那么union中其他元素的值又是多少呢?
union test
{
int a;
char b;
}hh;
hh.a = 0;
hh.b = -1;
cout << hh.a << endl;
最后的结果是hh.a = 255。原因是hh.b = -1时,低位字节存储11111111(补码),那么整个4个字节就是00000000 00000000 00000000 11111111,即255。(正数的原码、反码、补码都一样,负数的原码不变,反码在原码基础上取反,补码在原码基础上取反加1)