c語言中整數溢位的概念
阿新 • • 發佈:2019-02-18
在編寫程式時,如果整數的值太大,超出了所定義的整數型別的範圍會怎麼樣?
下面分別將有符號型別好無符號型別整數設定為最大允許值加略大一些的值,看一看結果是是什麼。 //printf函式使用%u說明符顯示unsigned int型別的值
程式段
#include <stdio.h>
int main(void)
{
int i = 2147483647;
unsigned int j = 4294967295;
printf ("%d,%d,%d",i,i+1,i+2);
printf("%u,%u,%u",j,j+1,j+2);
return 0;
}
上面所設定的整形和無符號整形均為系統所允許的最大值,下面即是執行的結果:
2147483647 -2147483648 -2147483647
4294967295 0 1
由此可以看出無符號整數 j 像一個汽車裡程指示表,當達到最大值時,他將溢位到起始點。整數 i 也同樣。
他們主要的區別是unsigned int 變數j的起始點是0,而int 變數起始點是-2147483648.
注意整數溢位系統的最大值時,編譯執行時系統並沒有給出提示,所以我們必須自行處理這個問題