为什么for循环中的行为有所不同?

时间:2020-10-15 12:28:55

标签: c++ for-loop

我一次又一次执行相同的循环后却得到不同的结果,这使我感到困惑。 第一个循环以不同的方式递增,第二个循环则完全不同。

结果:

1 , 1
1 , 2
1 , 3
2 , 1
2 , 2
2 , 3
3 , 1
3 , 2
3 , 3

代码:

#include <iostream>
using namespace std;

int main()
{
    for(int outerval {1}; outerval <= 3; outerval++)
        for(int innerval {1}; innerval <= 3; innerval++)
            cout << outerval << " , " << innerval << '\n';
    return 0;
}

2 个答案:

答案 0 :(得分:3)

您在这里有一个嵌套循环。对于外循环的每次迭代,完成内循环。因此预期输出。如果您希望将这些循环拆开,可以通过

for(int innerval {1}; innerval <= 3; innerval++)
   cout << innerval << '\n';

for(int outerval {1}; outerval <= 3; outerval++)
    cout << outerval << '\n';

将打印

1
2
3
1
2
3

答案 1 :(得分:0)

当您执行一个for循环时,它首先完成,无论其内部是什么,然后转到下一个迭代,因此它首先完成内部for循环,然后外部for循环进入下一个迭代,然后再次完成内部等

如果您希望两个循环在另一个循环之后进行迭代,则可以这样做:

for (int i = 0; i < 4; i++){
    cout << i << endl;
}

for (int i = 0; i < 4; i++){
    cout << i << endl;
}

结果:

0
1
2
3
0
1
2
3