#include <iostream>
using namespace std ;
union{
}u;
void main()
{
}
输出结果:
f0f1f2f3
f3
------------------------------------------------------------------------------------------------------------------
需要记住:UNION是一个联合体,各个成员共用空间,占用的空间等于其中占用空间最大的成员的SIZE。
又因为:
内存中数据低位字节存入低地址,高位字节存入高地址,而数据的地址采用低地址来表示。
所以,u.i占了整个四个字节,而u.a只占了最低位的一个字节。所以u.a是0xf3.
--------------------------------------------------------------------------------------------------------------------------
应用,现在实验一下:
u.a = 'A';
然后再输出:
f0f1f2f3
f3
结果不变,这是因为虽然a赋值了,但是被后面赋值的i给覆盖了。
----------------------------------------------------------------------------------------------------------------------------
再变一下,假设变为:
u.i = 0xf0f1f2f3;
那么结果则是:
f0f1f24141
是因为a后来的赋值覆盖了i之前的赋值的低字节,A的十六进制是41,所以输出41.