C中的無符號int的大小爲0 to 65,535 or 0 to 4,294,967,295
。C中的無符號整數的行爲
我用下面的代碼在C下測試:
unsigned int number = 0;
number -= 300;
printf("%d\n", number);
OUTPUT:-300
記得,如果unsigned int
變量的值低於0,但應迴繞,我期待輸出結果如4294966996
。但是從控制檯打印的輸出是-300
。
我在C++中測試了類似的語句,它確實給了我4294966996
。
我的問題是:爲什麼輸出-300
,儘管它是一個unsigned int
?
PS:我已經通過幾個職位有類似的標題看,但他們都沒有解決同一個問題:
Unexpected results on difference of unsigned ints
'printf'是一個愚蠢的函數。你必須確保你傳遞它期望的類型! – 2014-11-21 07:14:52
請記住用signed int格式字符串打印unsigned int是未定義的行爲。 – 2014-11-21 07:15:04
只是最後一個問題:我是否正確地說,如果我使用%d打印它,它會在打印之前將其隱式轉換爲已簽名? – user3437460 2014-11-21 07:17:01