这种问题完全取决于你的操作系统是大字节序还是小字节序了,这里只说一下原理吧。
共同体使用的是所有里面最大的内容,因此union INFO占用10个字节。其中a b c都只占用前面4个字节。
对于最开始给a b c的赋值,相关于只有最后一个生效。
然后A.d[3]='t',更改了第4个字节的内容,那前面的整数就全变了。
如果楼主的机器是大字节序的话,比如linux
A.a=1执行完之后 A的内存如下:
01 00 00 00 XX XX XX XX XX XX XX代表没有赋值,随机值
A.b=3执行完之后 A的内存如下:
03 00 00 00 XX XX XX XX XX XX XX代表没有赋值,随机值
A.d[3]='t'执行完之后 A的内存如下:
03 00 00 74 XX XX XX XX XX XX XX代表没有赋值,随机值
然后再计算后面的打印吧
如果楼主的机器是小字节序的话,比如winodws
A.a=1执行完之后 A的内存如下:
0 00 00 01 XX XX XX XX XX XX XX代表没有赋值,随机值
A.b=3执行完之后 A的内存如下:
00 00 00 03 XX XX XX XX XX XX XX代表没有赋值,随机值
A.d[3]='t'执行完之后 A的内存如下:
00 00 00 74 XX XX XX XX XX XX XX代表没有赋值,随机值
然后再计算后面的打印吧