C語言int x=4294967295;怎麼改代碼才能結果顯示為「4294967295」?

本來C語言驗證int在內存的長度題目

#include &

void main(void)

{

int x=4294967296;

printf("
x=%d",x);

} 結果顯示為0

我把 int x=4294967296;中x的初始賦值改為「4294967295」,顯示結果為「-1」,原因是4294967295在內存中以二進位形式表示為「1111 1111 1111 1111 1111 1111 1111 1111」,與「-1」在內存中的補碼相同,但我在前面加上「unsigned」,結果還是顯示為「-1」,怎麼改代碼才能結果顯示為「4294967295」?


unsigned int,然後%d得換成%u


int默認是signed int,最大只能表示你所輸入的一半啊,多了就溢出了同學,%d也表示int型,所以兩個都得改,改成unsigned int和%u就可以了,另外,學擼代碼多多利用百度和谷歌。


把%d改成%u就好

printf只認格式化指令,不關心你傳了啥參數


longlong



從理論上講,你只要把%d改成%u就夠了,加不加unsigned無所謂。

printf只認格式化輸出,並不關心你之前定義的是什麼。

不過當然既然是無符號整數當然還是加上unsigned


long


推薦閱讀:

為什麼不建議用 try catch?
malloc出錯?
如果BUG和電腦病毒入侵到現實世界裡,TA們會長什麼樣?
如何正確高效的查找遊戲「卡頓」原因?

TAG:編程 | C編程語言 |