我正在处理一个简单的简短C++代码,for 循环循环比它必须的多循环一个(使用 code::blocks 开发):
#include <iostream>
using namespace std;
int main() {
int x = 0;
for (x=10; x<20; x++);
cout<<x;
return 0;
}
输出是 20,但据我所知必须是 19。
图片链接 : https://drive.google.com/file/d/0B9WsVzm6FTagbC1uNHpMZ1p6SW8/edit?usp=sharing
输出正确。第二个语句x<20
定义是否执行循环。但是,x 增加到 20,不满足条件,并且不执行循环。您的代码在 for 循环之后打印 x 变量,这就是为什么 20 是正确的输出。
x < 20
是必须满足的条件才能保持在循环内,这意味着您只会在x >= 20
时退出循环,因此当您到达x = 19
时,您仍然会再迭代一次,因为19 < 20
。
foor 循环中的中间部分 ;x<20; 是循环条件。这意味着如果它不再为真,它将不会再次执行 x++。因此,只有当 x 达到 20
我们可以使用 while 循环重写您的代码,这可能会使其更清晰:
int main() {
int x = 10;
while (x < 20)
x++;
cout << x << "n";
return 0;
}
当以这种方式编写时,很明显,在迭代中,当 while 循环结束时,该x == 20
.