【问题标题】:What does this Java for loop termination condition mean?这个Java for 循环终止条件是什么意思?
【发布时间】:2015-11-08 06:37:47
【问题描述】:

我想知道这里是否有人知道终止条件 下面的for循环应该是什么意思。

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

【问题讨论】:

  • &lt;&lt; 是位运算符。它乘以 2 级时间。

标签: java loops for-loop


【解决方案1】:

&lt;&lt; 将第一个操作数 n 的位向左移动,n 是第二个操作数。

因此1 &lt;&lt; Level将数字1Level的单个1位向左移动了几次,相当于计算了2^级。

所以i &lt; 1 &lt;&lt; Level 等价于i &lt; Math.pow(2,Level)

【讨论】:

    【解决方案2】:

    简单地说

    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++){}
    

    【讨论】:

      【解决方案3】:

      除了其他答案之外,如果不清楚,在表达式周围加上括号可能会有所帮助

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-11
        • 1970-01-01
        • 2018-05-27
        相关资源
        最近更新 更多