{+ 1}}在C ++中的含义是什么?
答案 0 :(得分:18)
返回a
和b
的平均值,向下舍入。因此,如果a
为5且b
为8,则结果为6.
ETA:如果a
和b
加起来为负数,如果两者都为负数,或者发生整数溢出,则此方法被终止。
答案 1 :(得分:12)
请注意,在您解释a
和b
之前,对代码的含义没有任何有意义的解释。
即使a
和b
属于内置类型,也要注意错误的答案,无条件声称内置右移相当于除以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)
这意味着您添加a
和b
,然后将结果向右移一位。
它与:
相同int c = (a + b) / 2;
答案 5 :(得分:1)
如上所述,它是利用c ++中的位移运算符的平均函数(其中存在一些潜在的缺陷) - 由于存在这个问题,这段代码的可读性非常糟糕。在编写代码时,请帮助程序员,并考虑可读性