输入下面代码:
#include <stdio.h>
union stTest
{
int a;
char b[2];
};
int main()
{
stTest t;
t.a = 300;
printf( "%u %u\n", t.b[ 0 ], t.b[ 1 ] );
return 0;
}
输出结果为:44 1
由于联合体 内存共享 则 b[2] 共享 a变量的内存地址
由于b[2]为char 所以 b[ 0 ] 占用 1 字节 8 位 b[ 1 ] 占用 1 字节8位
a = 300 我们 将 300 转换为二进制 为:100101100
b[ 0 ] 占用低字节 8 位 则为:00101100 b[ 1 ] 占用高字节8为:剩下的1
所以b[ 0 ] = 00101100 = 44 b[ 1 ] = 1
内存分别如图: