C++ For Loop not Exiting

1 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";
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)

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

rua*_*akh 8

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

这一行:

cout << "out";
Run Code Online (Sandbox Code Playgroud)

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

cout << "out" << endl;
Run Code Online (Sandbox Code Playgroud)

一旦该行运行,将立即打印"out".这将帮助您确定程序是否在它到达该行之前挂起,或稍后在某处.

  • 它不是运行时中的错误,而是缓冲输出的工作原理.+1 (5认同)
  • 如果你不想换行,请使用`std:flush`而不是`std :: endl`. (2认同)