X/Y 是正确的一种方式...而 " >> " 移位运算符..如果我们想要将一个整数除以二,我们可以使用 (/) 被除数运算符。移位运算符用于移动位.. x=x/2; x/=2; 我们可以像这样使用..
x
,那么这两种方式都不太合适:应该是x >>= 1
或者x /= 2
,具体取决于你希望表达的操作意义。这并不是因为它更快(现代编译器会将所有等效变体编译为相同、快速的汇编代码),而是因为它更清晰易懂。 - leftaroundaboutx = x >>> 1
。另请注意,根据平台和编译器的不同,手动优化除法和乘法使用移位操作可能是相当合理的。举个例子,微控制器没有直接的ALU支持乘法。 - JimmyBx /= 2
,因为x >>= 1
看起来太像单子绑定(monadic bind)了 ;) - fredoverflowx = x / 2
比写x /= 2
更易读。这可能是主观偏好 :) - JimmyB