此代码:
for(int i=5; i<50; i=i*2){
}
为什么循环4次而不是3次?我认为它做了5x2 = 10,然后10 x 2 = 20,然后是20 x 2 = 40,并且因为40 x 2大于50而停在那里。
答案 0 :(得分:4)
打印数字:
for (int i = 5; i < 50; i = i * 2) {
System.out.println(i);
}
输出:
5
10
20
40
所以你错过i == 5
时的第一次迭代。
顺便说一下,i = i * 2
可以写成i *= 2
。
答案 1 :(得分:2)
第一次执行使用指定的值i
。它只在执行后迭代。所以它会在你列出的三次之前运行一次。
答案 2 :(得分:1)
在第一次迭代i
5 。
第二次循环时,i
10 。
第三次i
20 。
第三次迭代后i
40 。 i
已通过 50 吗?没有。
第四次迭代i
80 之后,我们退出循环。
这使得 4 次迭代。
答案 3 :(得分:1)
嗯,开始:
if i < 50 --> do a iteration
i=5
- &gt;小于50 - &gt;第一次循环;
现在增加i
- &gt; i = i*2
- &gt; i = 5*2 = 10
i=10
- &gt;小于50 - &gt;第二个循环;
现在增加i
- &gt; i = i*2
- &gt; i = 10*2 = 20
i=20
- &GT;小于50 - &gt;第三个循环;
现在增加i
- &gt; i = i*2
- &gt; i = 20*2 = 40
i=40
- &gt;小于50 - &gt;第四个循环;
现在增加i
- &gt; i = i*2
- &gt; i = 40*2 = 80
i=80
- &gt;大于50 - &gt;停止