本文共 998 字,大约阅读时间需要 3 分钟。
Write a “C” function, int addOvf(int* result, int a, int b) If there is no overflow, the function places the resultant = sum a+b in “result” and returns 0. Otherwise it returns -1. The solution of casting to long and adding to find detecting the overflow is not allowed.
There can be overflow only if signs of two numbers are same, and sign of sum is opposite to the signs of numbers.
1) Calculate sum2) If both numbers are positive and sum is negative then return -1 Else If both numbers are negative and sum is positive then return -1 Else return 0
/* Takes pointer to result and two numbers as arguments. If there is no overflow, the function places the resultant = sum a+b in “result” and returns 0, otherwise it returns -1 */ int addOvf(int* result, int a, int b) { *result = a + b; if(a > 0 && b > 0 && *result < 0) return -1; if(a < 0 && b < 0 && *result > 0) return -1; return 0; }
转载地址:http://sexti.baihongyu.com/