可乐加冰加两块 2022-01-01 14:52 采纳率: 94.1%
浏览 41
已结题

为什么会输出这些结果??是怎么得到的?

img


为什么会输出这些结果?是怎么得到的?希望得到解答
为什么输出结果不同?

  • 写回答

1条回答 默认 最新

  • a5156520 2022-01-01 19:23
    关注

    是这样的,union联合里面的变量共用一段相同的内存,如果往里面写数据是在一段内存上写,读也是,具体是这样的:
    test.i = 0x12345678 ,32位, 二进制是:0001 0010 0011 0100 0101 0110 0111 1000
    然后以十六进制打印int长度的数据就是:12345678


    打印一个字节的字符就是打印前面那个二进制串的后面八位,十进制是120,对应的ASCII码正好是 'x'


    打印一个2个字节的short就是二进制串后面16位,十六进制是5678


    然后给里面的字符变量c赋值,就是往这个内存的后面8位写入'A‘字符的对应的二进制值-- 0100 0001,
    这个二进制串就变为:0001 0010 0011 0100 0101 0110 0100 0001


    同理,打印int长度就是打印这全部32位,对应十六进制是12345641


    打印一个字符长度8位,就读取这个二进制串后面8位,对应ASCII码 'A'


    打印16位的short,就读取这个二进制串后面16位,对应十六进制是:5641

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月11日
  • 已采纳回答 3月3日
  • 创建了问题 1月1日