这是什么意思?为什么答案是A

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

union 一个联合类型 联合中的字段共享内存,上述联合中 k 和 i 共享一块4字节内存 因为int类型占用4字节 char类型数组i占用2字节,取最大字节数,所以是4字节
然后 i[0] = 0x39 i[1] = 0x38 因为是共享内存,即i和k用的是同一块内存,修改k的值或者修改i的值都会影响到另一个变量的内容,所以如果这时候输出k的值 就会是3839 或者是 3938 具体是哪个是根据当前电脑的系统是大端系统还是小端系统 小端系统则是 3839 大端是3938

大端和小端模式可以看下这篇文章了解下:https://www.cnblogs.com/yinheyi/p/5580789.html

共用体union,int跟char i[2]共享内存,int占4个字节,char i[2]占2个字节,给i赋值就是再给k赋值,后两个字节赋值为3839,就相当于给k赋值3839

两个知识点:
1:共用体union的特性,成员共同占用一块内存。 (一个变量初始化,其他变量可以根据类型取值)
2:与计算机存储模式有关,大端小端问题, (决定了内存分布,值得变化)

img