(a + b)>> 1是什么意思?

时间:2010-09-23 16:26:44

标签: c++ operators

{+ 1}}在C ++中的含义是什么?

6 个答案:

答案 0 :(得分:18)

返回ab的平均值,向下舍入。因此,如果a为5且b为8,则结果为6.

ETA:如果ab加起来为负数,如果两者都为负数,或者发生整数溢出,则此方法被终止。

答案 1 :(得分:12)

请注意,在您解释ab之前,对代码的含义没有任何有意义的解释。

即使ab属于内置类型,也要注意错误的答案,无条件声称内置右移相当于除以2.等效仅适用于非负值。负值的>>运算符的行为是实现定义的。

换句话说,没有额外的信息,唯一可以说的是代码计算“sum”a + b并将其“右移”1位。我在最后一句中使用了引号,因为在重载运算符+>>的情况下,无法预测它们正在做什么。

答案 2 :(得分:6)

这取决于c,a和b的类型。如果是int,则上述语句与:

相同
c = (a+b)/2;

>>表示向右移一位。

答案 3 :(得分:2)

这意味着将A添加到B,然后将结果向右移位一位。对正整数进行位移通常具有乘以或除以2 ^ n的效果,其中n是被移位的位数。所以,这大致等于整数数学中的(a + b)/ 2(没有余数或小数部分)。

答案 4 :(得分:1)

这意味着您添加ab,然后将结果向右移一位。

它与:

相同
int c = (a + b) / 2;

答案 5 :(得分:1)

如上所述,它是利用c ++中的位移运算符的平均函数(其中存在一些潜在的缺陷) - 由于存在这个问题,这段代码的可读性非常糟糕。在编写代码时,请帮助程序员,并考虑可读性