小编典典

将数字加倍-左移与乘法

algorithm

之间有什么区别

int size = (int)((length * 200L) / 100L); // (1)

int size = length << 1; // (2)

(在两种情况下,长度都是int)

我假设两个代码片段都希望将length参数加倍。

我很想使用(2)…所以使用(1)有什么好处吗?我查看了发生溢出时的极端情况,并且两个版本似乎都具有相同的行为。

请告诉我我想念的是什么。


阅读 382

收藏
2020-07-28

共1个答案

小编典典

这是第三个选项:

int size = length * 2; // Comment explaining what is 2 or what means this multiplication

这必须是最好的选择。由于可读性强,易于理解您想要做什么。至于性能,编译器正在生成相当优化的代码,因此无需担心如此简单的操作。如果您对溢出有任何疑问,可以使用checked块。

编辑 正如许多其他人所提到的,只需在2这里使用任何有意义的变量即可。

2020-07-28