怎么总是错误的赋值变量

运用typedef union,给其中一个变量直接赋值,输出的结果比所附的值少1

img

赋值98,运算出来的结果为97

我想要达到的结果为98

'a'的ASCII码值是97啊,u.ch='a'这里赋值的时候,97把上面的u.id=98这里赋的值给覆盖掉了
windows系统低字节序在前,u.id的4个字节 0x 00 00 00 62,ch共享id的低字节(0x62所在的字节,0x62的十进制是98),u.ch='a'把98覆盖成97了,所以最后输出的就是97

union类型是联合类型,各字段共享一块内存空间, u.id 和 u.ch是用的同一个内存空间
之后赋值的'a'(编码97)会覆盖98