C ++ For Loop not Exiting

时间:2011-10-23 19:19:54

标签: c++ for-loop break

我的程序中有一个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;
    }
编辑:问题解决了,谢谢你的帮助。

1 个答案:

答案 0 :(得分:8)

我打赌它实际上是该计划的后期部分。

这一行:

cout << "out";

只是在输出缓冲区中输出“out”,并且在输出缓冲区被刷新之前不会实际打印“out”。 (哪个可以立即发生,但不太可能发生。)将该行更改为:

cout << "out" << endl;
一旦该行运行,将立即打印

和“out”。这将帮助您确定程序是否在它到达该行之前挂起,或稍后在某处。