無符號變數存儲負數
發布時間: 2023-12-11 17:25:27
1. 關於在C語言中無符號整形存儲負數問題
你的理解是對的。
最高位為1時,對於有符號來說,這個數是負數,而對於無符號數而言,由於最高位也是有效存儲位,所以可以存儲更大范圍的數。
話再說回來,既然是無符號數,輸出格式應該是"%u",而不是"%d",這樣才能做到「表裡如一」,「改頭換面」只會亂了自己,這不是游戲,嚴謹是必須的。
2. C語言中無符號整數變數賦負整數為什麼不報錯,而且列印這個數也是負數
給一個無符號變數賦一個負數,就把這個「負數」的補碼當正數對待了(unsigend的級別高於int)——這和給一個浮點變數賦一個整型數時被提升為浮點型一樣——這符合C/C++的自動類型轉換規則,所以不報錯。至輸出還是負數恐怕不對,除非你強制為int型輸出,否則輸出是無符號的。
熱點內容