我的程序中有一个for循环,一个非常简单的循环,我希望它循环并执行一些最少次数的操作。然而,循环只是...停止。但是不会继续讨论计划中的下一件事。例如,当min为9时,它运行i = 0到i = 8,然后冻结。它应该退出for循环,但它不会执行下一个打印指令,也不会再次执行循环。它就停止了。程序挂了,据我所知,什么也没做。我不明白为什么会这样。
我想执行的merged.put()函数只是将x或y置于合并状态,具体取决于条件。那部分有效。这只是一个更大的计划的一小部分。 sp1,sp2和merged都在别处定义。
int i;
int x;
int y;
for(i=0; i < min; i++)
{
cout << " here " + convert(i);
x = sp1.get_num(i);
y = sp2.get_num(i);
if(x >= y) {
merged.put(x);
}
else {
merged.put(y);
}
cout << " end" << endl;
}
cout << "out";
编辑:我没有发布整个代码,它长达数百行。 min的类型是int。 &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;将endl添加到最后一个打印语句中,打印出来。我的问题现在似乎在这里,卡在第二个,因为我没有增加我。对我感到羞耻......谢谢你的帮助。 (这直接在上面的代码之后)
if (sp_large == 2) {
cout << "1" << endl;;
while (i < sp2.get_size()) {
merged.put(sp2.get_num(i));
}
}
else {
while (i < sp1.get_size()) {
merged.put(sp1.get_num(i));
}
cout << "2" << endl;
}
编辑:问题解决了,谢谢你的帮助。
答案 0 :(得分:8)
我打赌它实际上是该计划的后期部分。
这一行:
cout << "out";
只是在输出缓冲区中输出“out”,并且在输出缓冲区被刷新之前不会实际打印“out”。 (哪个可以立即发生,但不太可能发生。)将该行更改为:
cout << "out" << endl;
一旦该行运行,将立即打印和“out”。这将帮助您确定程序是否在它到达该行之前挂起,或稍后在某处。