以加法(溢出一位)情况举例, 判断两个加数的符号和相加结果的符号1)如果两个加数符号相反,则断定无溢出.2)如果两个加数符号相同且与计算结果同号,也可以断定没有溢出.3)如果两个加数符号相同且与计算结果相反,则分两种情况加数的符号为正相加结果为负数, 说明计算结果中本来最高位为符号位因为溢出置1,这种情况可以用unsigned long * 指针获取计算结果.比如,
long c = a + b; if(a > 0 && b > 0 && c < 0) {
unsigned long * pValue = (unsigned long *)&c;
printf("result ...
|