求平均值,你会吗?
是的.这是一个很简单的问题.程序员一定也会.可是我们在会的时候,却忘记了会溢出,因为二个整型数相加之后可能会大于int.Max
如果是这样的话,那我们按上面的公式求出来的值还会正确吗.但是我们知道它们的平均值是肯定不会溢出
来看一下下面的代码.轻松解决了这个问题.
[code=cplusplus]
int average(int x, int y) //返回X,Y 的平均值
{
return (x&y)+((x^y)>>1);
}
[/code]
不信你可以试一下.看看正确吗?