求平均值,你会吗

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/greystar/article/details/2774468

二个整型数求其平均值,这个问题有人说,小学生都会. c=(a+b)/2

是的.这是一个很简单的问题.程序员一定也会.可是我们在会的时候,却忘记了会溢出,因为二个整型数相加之后可能会大于int.Max

如果是这样的话,那我们按上面的公式求出来的值还会正确吗.但是我们知道它们的平均值是肯定不会溢出

 

来看一下下面的代码.轻松解决了这个问题.

int average(int x, int y)  //返回X,Y 的平均值
{   
    return (x&y)+((x^y)>>1);
}

不信你可以试一下.看看正确吗

展开阅读全文

没有更多推荐了,返回首页