[英]trouble understanding the increment in this for loop
我做了自己的for循环,以为我很清楚我不知道答案。 我试图更好地理解循环和while循环等。所以我正在练习。
#include <iostream>
using namespace std;
int main()
{
int I;
for ( I = 1 ; I<11 ; I += 3)
cout << ++I << "," << flush;
cout << endl;
}
现在我认为输出将是1递增到2,然后加到3,所以I = 1, ++I
, 2+3 = 5
然后I= 5, ++I
6+3 = 9
因此在终止之前,输出为5、9。
但是当我在Visual Studio 2010中编译它时,输出的结果是2、6、10
我想这是先增加到2,然后再增加到3,然后再增加到3,然后6增加到7,然后再增加到3,得到10。
但这对我来说没有意义,因为为什么不会先将2加到3。
谢谢。
考虑到
for ( I = 1 ; I<11 ; I += 3)
cout << ++I << "," << flush;
如
for ( I = 1 ; I<11 ; )
{
cout << ++I << "," << flush;
I += 3;
}
++I
是预递增的,因此从I = 1
意味着您得到cout << 2
,然后得到I += 3
,得到5
,然后进行下一次迭代。
(请注意,将5
预先增加到6
,然后在下一次迭代中将其打印出来)
++I
是一个预增量运算符,因此它首先执行一个增量,然后返回该值,因此您的程序将按以下方式运行:
1)I = 1,预递增,所以I = 2,打印I => 2 ,然后I + = 3 = 5
2)I = 5,先递增,所以I = 6,打印I => 6 ,然后I + = 3 = 9
3)I = 9,预递增,所以I = 10,打印I => 10 ,然后I + = 3 = 13
4)I = 13,终止。
如果您这样看,我认为这更清楚。 您的for循环等效于:
{
int I = 1;
while (I < 11)
{
++I;
out << I << "," << flush;
I += 3;
}
}
请注意,预增量将返回当前的I
值(增量后的值)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.