C語言int x=4294967295;怎麼改代碼才能結果顯示為「4294967295」?
01-07
本來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只認格式化輸出,並不關心你之前定義的是什麼。
不過當然既然是無符號整數當然還是加上unsignedlong
推薦閱讀:
※為什麼不建議用 try catch?
※malloc出錯?
※如果BUG和電腦病毒入侵到現實世界裡,TA們會長什麼樣?
※如何正確高效的查找遊戲「卡頓」原因?