为什么会输出这些结果?是怎么得到的?希望得到解答
为什么输出结果不同?
是这样的,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