int a, b, c 请写函数实现C= a+b;不可以改变数据类型,如将c改为long int,关键是如何处理溢出问题
bool add(int a, int b, int *c)
{
*c = a+b;
return (a>0 && b>0 && (*c<a||*c<b) || (a<0 && b<0 && (*c>a || *c>b)));
}
这是一道面试题,以及答案。
看了一会,没有看懂,能帮忙解释一下吗?
...全文
7777打赏收藏
函数实现c = a + b
int a, b, c 请写函数实现C= a+b;不可以改变数据类型,如将c改为long int,关键是如何处理溢出问题 bool add(int a, int b, int *c) { *c = a+b; return (a>0 && b>0 && (*c<a||*c<b) || (a<0 && ba || *c>b))); } 这是一道面试题,以及答案。 看了一会,没有看懂,能帮忙解释一下吗?
if(a > 0 && b > 0) // 如 a,b 为正数, 沒溢出时 c 必比 a 或 b 大
return *c > a;
else if(a < 0 && b < 0) // 如 a, b 为负数, 沒溢出时 c 必比 a 或 b 小
return *c < a;
else // a 或 b = 0 或 a, b 为正负各一
return true;