在我的程序中,我有一个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";
Run Code Online (Sandbox Code Playgroud)
编辑:我没有发布整个代码,它长达数百行.min的类型是int.那里的回复很有帮助,当<< endl被添加到最后一个print语句时,它打印出来了.我的问题现在似乎在这里,卡在第二个,因为我没有增加我.对我感到羞耻......谢谢你的帮助.(这是直接在上面的代码之后)
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;
}
Run Code Online (Sandbox Code Playgroud)
编辑:问题解决了,谢谢你的帮助.
我敢打赌,它实际上是该计划的后期部分.
这一行:
cout << "out";
Run Code Online (Sandbox Code Playgroud)
只是将"out"放在输出缓冲区上,并且在输出缓冲区被刷新之前不会实际打印"out".(这可能会立即发生,但不太可能发生.)将该行更改为:
cout << "out" << endl;
Run Code Online (Sandbox Code Playgroud)
一旦该行运行,将立即打印"out".这将帮助您确定程序是否在它到达该行之前挂起,或稍后在某处.