在c++中,循环中的循环和增量保持为0

Loops in loops and increment staying at 0 in C++

本文关键字:循环 c++      更新时间:2023-10-16

在一个while循环中有两个while循环,如下代码所示:

#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
    int p = 0;
    int p2 = 0;
    int p3 = 0;
    while(p < 10)
    {
        while(p2 < 10)
        {
            while(p3 < 10)
            {
                cout << p << endl;
                cout << p2 << endl;
                cout << p3 << endl;
                cout << endl << endl;
                p3++;
            }
            p2++;
        }
        p++;
    }
}

谁能告诉我为什么输出是:

0
0
0

0
0
1

0
0
2

0
0
3

0
0
4

0
0
5

0
0
6

0
0
7

0
0
8

0
0
9

就像p++和p++不能工作,只有一个p++的循环。这是我在我的项目中简化的代码,它的结果正是我与它的问题。我所期望的是,当p2从0到9,p从0到9时,p3会一直从0到9。结果应该是p=9 p2=9 p3=9。我已经看了一段时间了,就是不明白。看起来很简单,应该踢,但它不是…

谢谢你的帮助!

p3等于10时,它将永远不会重新进入while (p3 < 10)循环(因为一旦将其增加到10,它将永远不会小于10,并且永远不会重新进入该循环)。所以,是的,pp2确实增加了,但它们从来没有被打印出来,因为p3 == 10在那个时间点。

p3变为10后,内循环中的条件不再满足;对于p2也是如此。

不能在每个内循环开始时重置迭代器:

{
  int p = 0;
  int p2 = 0;
  int p3 = 0;
  while (p < 10) {
    // p2 NOT reset here! - just move "int p2 = 0;" here.
    while (p2 < 10) {
      // p3 NOT reset here! - just move "int p3 = 0;" here.
      while (p3 < 10) {
        // ...
        p3++;
      }
      p2++;
    }
    p++;
  }
}