int a(int x){
......
}
怎么判断x溢出?因为如果溢出,系统就自动处理了,到函数里就是一个没有溢出的数,我怎么在函数里判断x有没有溢出(超过int范围)?
int a(int x){
......
}
怎么判断x溢出?因为如果溢出,系统就自动处理了,到函数里就是一个没有溢出的数,我怎么在函数里判断x有没有溢出(超过int范围)?
a函数无法判断是否溢出,若是大于最大的int的值就变成负的了,若是小于最小的int的值就变成正数了。
只能在x溢出之前进行判断。
例如:a + b 且 b > 0
if (INT_MAX - b < a) //overflow
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位内联汇编判断OF标志位
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
就像你说的.系统自动处理了没办法判断.
可以把int 改成long .这样就可以判断了..