1: 通常情况我们会这样写:
int avg(int a, int b){
return (a+b)/2;
}
为什么我们很少考虑到类型溢出呢?a+b有可能大于int的范围啊?
有人说,讲int类型转化为float,显然不科学,效率会下降。
2:正确的做法:
int
avg(
int
a,
int
b)
{
//如果是一正一负
if
((a < 0) != (b < 0))
return
(a + b) / 2;
else
return
a + (b - a) / 2; //如果两个符号相同
}
下面是测试结果,超过数据类型的最大范围,然后计算结果就出问题了。