鍍金池/ 問答/C  C++  網(wǎng)絡(luò)安全/ 沒思路,C++怎么判斷輸入溢出?

沒思路,C++怎么判斷輸入溢出?

int a(int x){
......
}

怎么判斷x溢出?因為如果溢出,系統(tǒng)就自動處理了,到函數(shù)里就是一個沒有溢出的數(shù),我怎么在函數(shù)里判斷x有沒有溢出(超過int范圍)?

回答
編輯回答
來守候

a函數(shù)無法判斷是否溢出,若是大于最大的int的值就變成負的了,若是小于最小的int的值就變成正數(shù)了。
只能在x溢出之前進行判斷。
例如:
a + b 且 b > 0
if (INT_MAX - b < a) //overflow

2018年4月29日 21:05
編輯回答
念舊

int a(int x) {

static short flag = 0;// no static will gen xor code to clear the OF flag
__asm {
    pushf;
    pop flag;
}
if ((flag & 0x0800) > 0) {//check OF
    printf("overflow ");
}
printf("%d\n", x);
return x;

}

int main()
{

int q = 0x80008000;
int w = 0x80004000;
int r = q + w;
a(r);
q = 0x10000100;
w = 0x10004000;
r = q + w;
a(r);

system("pause");
return 0;

}
圖片描述

思路:32位內(nèi)聯(lián)匯編判斷OF標志位

2017年1月18日 19:30
編輯回答
局外人

就像你說的.系統(tǒng)自動處理了沒辦法判斷.
可以把int 改成long .這樣就可以判斷了..

2018年2月27日 18:02