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

trouble understanding the increment in this for loop

我自己编写了 for 循环,以为我知道答案,哈哈,显然我不知道。我试图更好地理解 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,然后在下一次迭代中打印)

我觉得这样看比较清楚。您的 for 循环相当于:

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

注意预先增加returns当前值I(增加后的值)。

++I是一个预自增运算符,所以它首先执行自增,然后returns值,所以你的程序是这样运行的:
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, 终止。