整数溢出?
怎样判断表达式溢出?
给个实例!
[解决办法]
- C/C++ code
//有符号整形a和b,如何判断a+b是否溢出#include <stdio.h>int ifo_add(int a,int b) { __asm { mov eax,a add eax,b jo overflowed xor eax,eax jmp no_overflowedoverflowed: mov eax,1no_overflowed: }}int main() { int a,b; a= 1;b= 2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b)); a= -1;b=-2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b)); a= 2147483647;b= 1;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b)); a=-2147483647;b=-1;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b)); a=-2147483647;b=-2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));}// 1+( 2) 0// -1+(-2) 0// 2147483647+( 1) 1//-2147483647+(-1) 0//-2147483647+(-2) 1