这个Java for循环终止条件是什么意思?

5

我想知道这个for循环中终止条件的含义。

for (int i = 0; i < 1 << Level; i++) {
...
}

6
“<<” 是一个位运算符。它将数值左移 Level 位,相当于将数值乘以2的Level次方。 - Uma Kanth
3个回答

8
<< 将第一个操作数的位向左移动 n 次,其中 n 是第二个操作数。
因此,1 << Level 将数字 1 的单个 1 位向左移动 Level 次,相当于计算 2 ^ Level。
因此,i < 1 << Level 等价于 i < Math.pow(2,Level)

3
简单来说
for (int i = 0; i < 1 << Level; i++) {
...
}

等于

for (int i = 0; i < Math.pow(2,Level); i++) {
...
}

因为你是从 0 计数到 Math.pow(2,Level)-1,所以 for 循环将运行 "Math.pow(2,Level)" 次。

如果 Level = 2,则循环如下:

for(int i =0;i<4;i++){}

如果等级(Level)为3,则循环(loop)结束。
for(int i =0;i<8;i++){}

如果Level等于5,则循环结束。
for(int i =0;i<32;i++){}

0
除了其他答案之外,如果表达不清楚的话,加上括号可能会有所帮助。
for (int i = 0; i < (1 << Level); i++) {
...
}

另外,由于Level是一个变量,建议使用小写字母,即level,除非它是一个常量,那么应该使用LEVEL。而且我认为一般来说可读性>性能(如果这真的是个问题的话?)。所以,Math.pow(2,Level)更容易理解,如果你不是低级程序员,看起来更像Java而不是C。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接