今天寫程序時,遇到一個問題,int型數據溢出,於是思考如何處理並預防這個問題。
首先,一般來說int類型為4字節共32位,所以一個int能夠表示的數據的范圍為: [−231, 231− 1],表示為十進制為:[-2147483648 ~ 2147483647]。好在C++中預定義了兩個宏INT_MAX和INT_MIN來表示上下限。
int數據類型出現異常的情況一般是在數據發生加法和乘法操作。對於加法運算:
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;