如何判斷int型別溢位

2021-10-08 03:39:59 字數 828 閱讀 4872

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次方為模。如果算術運算子的乙個運算元是有符號書,另乙個是無符號數,那麼有符號數 會被轉換為無符號數 表示範圍小的總是被轉換為表示範圍大的 那麼溢位也不會發生。但是,...