程序的输出结果是266,也就是16进制数0x010A(内存占用情况)的值,因为联合体低位存放于低地址,高位存放于高地址,而且联合体所有成员是公用一块内存空间的,对联合体的不同成员赋值,会改变其他成员的值,而对于结构体,是不会改变其他成员的值,因此若A为struct,结果为0.
由此我想到了网上的一道经典的判断大小端的代码,这就好理解了
代码如下:
联合体的所有数据成员都是低地址开始存放,从上面这个程序可以测试出英特尔的CPU是小端模式。
程序的输出结果是266,也就是16进制数0x010A(内存占用情况)的值,因为联合体低位存放于低地址,高位存放于高地址,而且联合体所有成员是公用一块内存空间的,对联合体的不同成员赋值,会改变其他成员的值,而对于结构体,是不会改变其他成员的值,因此若A为struct,结果为0.
由此我想到了网上的一道经典的判断大小端的代码,这就好理解了
代码如下:
联合体的所有数据成员都是低地址开始存放,从上面这个程序可以测试出英特尔的CPU是小端模式。