我在代码中有一个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最终。我现在已经主演了一段时间而且没有得到它。看起来很简单,应该踢,但不是......
感谢您的帮助!
答案 0 :(得分:0)
p3变为10后,内循环中的条件再也不会满足;同样适用于p2。
答案 1 :(得分:0)
当p3
等于10时,它将永远不会重新进入while (p3 < 10)
循环(因为一旦你将它增加到10,它将永远不会少于10并且永远不会重新进入进入那个循环)。是的,p
和p2
会增加,但它们永远不会被打印,因为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++;
}
}