刚才跑了一下 答案应该会跟你的电脑是big endian还是little endian有关?先讲union union里宣告的变量内存是共享的 (可以去print两个人的位址,会是一样的 ) 而大小由最大的那个人决定int有4个bytes, char只有1个,所以就分配4 bytes给u今天覆值187给u.n 二进制是0...010111011(共32 bit)如果是一般intel电脑,是little endian的 就会分成4段10111011, 00000000, 00000000, 00000000由低位开始摆,而u.m因为跟u.n共享同一个位址,但又是char,只有一个byte所以印出来的时候就会印出 10111011转成10进位就是-69但如果今天是big endian, 就会反过来摆 那答案就是0