好吧我知道這個問題可能有些不可思議,但我仍然想讓它神祕化。關於C整數類型和printf()說明符的奇怪問題
1)一個int
類型在C可在-2147483648範圍存儲號碼爲2147483647
2.)如果我們追加一個unsigned
它前面的它的範圍內,將成爲0到2147483647
3.)事情是,爲什麼我們甚至懶得使用關鍵字unsigned
時,下面的代碼可以實際工作。
驗證碼:
#include <stdio.h>
int main(void)
{
int num = 2147483650;
printf("%u\n" , num);
return 0;
}
4)如你所見,我仍然可以打印出整數unsigned型,如果我用%u
符和它會打印我的價值2147483650
。
5)即使我創建另一個整數類型與價值50
與num
概括起來講,雖然它的溢出,但我卻仍然可以通過使用%u
specifier.So打印出正確的和值爲什麼unsigned
關鍵詞仍然是一個必要性??
感謝您花時間閱讀我的問題。
除了未定義的行爲之外,打印對於('unsigned')整數的唯一有意義的操作還遠遠不夠。 – 2011-05-10 16:30:25