循环中的循环和C ++中的增量保持为0

时间:2014-05-20 18:52:49

标签: c++ loops while-loop increment

我在代码中有一个while循环中的2个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 ++和p2 ++不能正常工作,而p3只有一个循环。这是我在项目中所拥有的简化代码,其结果正是我遇到的问题。我期待发生的是p3将从0变为9,每个p2变为0到9,每个p变为0到9.因此结果应该到p = 9,p2 = 9,p3 = 9最终。我现在已经主演了一段时间而且没有得到它。看起来很简单,应该踢,但不是......

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

p3变为10后,内循环中的条件再也不会满足;同样适用于p2。

答案 1 :(得分:0)

p3等于10时,它将永远不会重新进入while (p3 < 10)循环(因为一旦你将它增加到10,它将永远不会少于10并且永远不会重新进入进入那个循环)。是的,pp2会增加,但它们永远不会被打印,因为p3 == 10在那个时间点。

答案 2 :(得分:0)

您没有在每个内部循环的开头重置迭代器:

{
  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++;
  }
}