繁体   English   中英

难以理解此for循环中的增量

[英]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, ++I2+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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM