int型別為4位元組共32位,所以乙個int能夠表示的資料的範圍為: [−231, 231− 1],表示為十進位制為:[-2147483648 ~ 2147483647]。
int資料型別出現異常的情況一般是在資料發生加法和乘法操作。對於加法運算:
#define int_max 2147483647
int a = int_max;
int b =1;
int c = a + b;
//error int溢位
//提前檢測是否溢位
if(int_max - a < b)
cout<<"發生溢位「;
else
int c = a + b;
對於乘法操作:
int a = int_max/2;
int b =3;
int c;
c = a * b;
//error int溢位
//提前檢測是否溢位
if(int_max/a < b)
cout<<
"發生溢位"
;else
c = a * b;
long
long res;
//sign表示res的正負值if(
((sign>0)
&&(res >
0x7fffffff))
||((sign<0)
&&(res >
0x80000000))
) cout<<
"發生溢位"
;
C 中如何判斷int型是否溢位
今天寫程式時,遇到乙個問題,int型資料溢位,於是思考如何處理並預防這個問題。首先,一般來說int型別為4位元組共32位,所以乙個int能夠表示的資料的範圍為 231,231 1 表示為十進位制為 2147483648 2147483647 好在c 中預定義了兩個巨集int max和int min來...
整數溢位,如何判斷整數溢位
c語言中存在兩類整數算術運算,有符號運算和無符號運算。在無符號運算裡,沒有了符號位,所以是沒有溢位的概念的。所有的無符號運算都是以2的n次方為模。如果算術運算子的乙個運算元是有符號書,另乙個是無符號數,那麼有符號數 會被轉換為無符號數 表示範圍小的總是被轉換為表示範圍大的 那麼溢位也不會發生。但是,...
整數溢位,如何判斷整數溢位
c語言中存在兩類整數算術運算,有符號運算和無符號運算。在無符號運算裡,沒有了符號位,所以是沒有溢位的概念的。所有的無符號運算都是以2的n次方為模。如果算術運算子的乙個運算元是有符號書,另乙個是無符號數,那麼有符號數 會被轉換為無符號數 表示範圍小的總是被轉換為表示範圍大的 那麼溢位也不會發生。但是,...