【问题标题】:Loops in loops and increment staying at 0 in C++ [closed]循环中的循环和增量在 C++ 中保持为 0 [关闭]
【发布时间】:2014-07-09 04:24:11
【问题描述】:

我在一个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 循环。这是我在项目中的简化代码,它的结果正是我遇到的问题。我期望发生的是,对于每个 p2 从 0 到 9 以及每个 p 从 0 到 9,p3 将继续从 0 到 9。所以结果应该最终达到 p=9,p2=9,p3=9 .我已经主演了一段时间了,只是不明白。看起来很简单,应该会踢但它不是......

感谢大家的帮助!

【问题讨论】:

  • 天哪。你有没有想过代码的逻辑?
  • 您是否意识到您并没有在循环执行完毕后重置p2p3 变量?
  • omg 刚刚意识到出了什么问题。对不起,伙计们,我想我只是超级累了,不再思考了。感谢所有的帮助!
  • 虽然这个问题可能很简单,但对于初学者问题来说,它并不是那么不好。他发布了完整的代码、实际输出和他的预期输出。正因为如此,我+1。就初学者的问题而言,它相当不错(即使它是一个简单的逻辑错误)。

标签: c++ loops while-loop increment


【解决方案1】:

p3 达到 10 后,内循环中的条件不再满足; p2 也是如此。

【讨论】:

    【解决方案2】:

    p3 等于10 时,它永远不会重新进入while (p3 &lt; 10) 循环(因为一旦你将它增加到10,它就永远不会小于10 并且永远不会重新进入那个循环) .所以是的,pp2 会增加,但它们永远不会被打印出来,因为 p3 == 10 在那个时间点。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-26
        • 2016-03-06
        • 1970-01-01
        • 2014-07-29
        相关资源
        最近更新 更多