我做了自己的循环思考我知道答案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, ++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中。
感谢。
答案 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
(增量后的值)。