c++ For循环不退出

C++ For Loop not Exiting

本文关键字:退出 循环 For c++      更新时间:2023-10-16

我有一个for循环,一个非常简单的循环,在我的程序中,我想让它循环并做一些事情最少的次数。然而,循环只是……停止了。但不会转移到程序中的下一个内容。例如,当min为9时,它运行i=0到i=8,然后冻结。它应该退出for循环,但不执行下一条打印指令,也不再次执行循环。它就这样停止了。程序挂起了,据我所知什么都没做。我不明白这是为什么。

我想执行的merge .put()函数只是根据条件将x或y合并。这部分有效。这只是一个更大项目的一小部分。Sp1、sp2和merge都在其他地方定义。

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。下面的回答很有帮助,当<<Endl被添加到最后一个print语句中,它被打印。我的问题现在似乎在这里,卡住了第二段时间,因为我没有增加I。谢谢你的帮助。(直接在上面的代码之后)

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

编辑:问题解决了,谢谢你的帮助。

我敢打赌,这实际上是程序的后一部分挂起了。

这条线

:

cout << "out";

只是在输出缓冲区上输出"out",在输出缓冲区被刷新之前不会实际打印"out"。(这可以立即发生,但不太可能发生。)将该行改为:

cout << "out" << endl;

和"out"将在该行运行后立即打印出来。这将帮助您确定程序是在到达该行之前挂起,还是在之后的某个地方挂起。