无法理解这个for循环中的增量

时间:2015-02-17 16:22:43

标签: c++ for-loop

我做了自己的循环思考我知道答案lol显然我没有。我试图更好地理解循环,而循环等等所以我正在练习。

#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, ++I6+3 = 9

所以在终止之前输出将是5,9。

但是当我在Visual Studio 2010中编译它时,我得到的输出是2,6,10

我认为它首先递增到2,然后再递增到3然后加到3,然后6递增到7,然后加到3得到10。

但这对我来说没有意义,因为为什么2不会首先添加到3中。

感谢。

3 个答案:

答案 0 :(得分:12)

想想

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,然后在下一次迭代中打印出来。)

答案 1 :(得分:3)

++I是一个预增量运算符,所以首先它执行一个增量然后返回该值,所以你的程序运行如下:
1)I = 1,预增量,所以I = 2,打印I =&gt; 2 ,然后我+ = 3 = 5
2)I = 5,预增量,所以I = 6,打印I =&gt; 6 ,然后我+ = 3 = 9
3)I = 9,预增量,所以I = 10,打印I =&gt; 10 ,然后我+ = 3 = 13
4)I = 13,终止。

答案 2 :(得分:2)

我认为如果你这样看是更清楚的。你的for循环相当于:

{
    int I = 1;
    while (I < 11)
    {
        ++I;
        out << I << "," << flush;
        I += 3;
    }
}

请注意,预增量返回当前值I(增量后的值)。