我想知道这里是否有人知道终止条件是什么 以下for循环应该是指。
for (int i = 0; i < 1 << Level; i++) {
...
}
答案 0 :(得分:8)
<<
将第一个操作数n
次的位移到左侧,其中n
是第二个操作数。
因此,1 << Level
将数字1
1
的单个Level
位向左移动,这相当于计算2 ^ Level。
因此i < 1 << Level
相当于i < Math.pow(2,Level)
。
答案 1 :(得分:3)
简单说明
for (int i = 0; i < 1 << Level; i++) {
...
}
等于
for (int i = 0; i < Math.pow(2,Level); i++) {
...
}
所以for循环将运行“Math.pow(2,Level)”次,因为你从0计算到Math.pow(2,Level)-1。
如果Level = 2则循环为
for(int i =0;i<4;i++){}
如果Level = 3则循环为
for(int i =0;i<8;i++){}
如果Level = 5则循环为
for(int i =0;i<32;i++){}
答案 2 :(得分:0)
除了其他答案之外,如果不清楚,可能有助于在表达式周围添加括号
for (int i = 0; i < (1 << Level); i++) {
...
}
此外,由于Level
是变量,因此建议使用小写字母level
除非它是常量,否则它应为LEVEL
。我认为一般来说可读性&gt;性能(如果它甚至是一个问题?)。因此,如果您不是低级程序员,Math.pow(2,Level)
更容易理解,看起来更像Java而不是C。