剛才跑了一下 答案應該會跟你的電腦是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