cout在无限循环的情况下不工作

时间:2015-09-18 12:54:54

标签: c++ infinite-loop

int main(int argc, char* argv[]) 
{
    while(1)
    {
        cout<<"123";
    }
    return 0;
}

我写了这个小程序,打印“123”,然后进入无限循环。但它不会在屏幕上打印任何内容。这是什么原因?

2 个答案:

答案 0 :(得分:7)

可能有两个原因。

首先,输出最有可能是缓冲的。也就是说,发送到cout的文本不会立即打印,而是保存在缓冲区中,仅在刷新缓冲区时打印(通过cout.flush()或打印endl)。

其次,我认为是一个空的无限循环is undefined behavior。也就是说,具有无限循环的程序实际上可以做任何事情;特别是,允许​​优化器优化程序之外的任何内容。

答案 1 :(得分:1)

最有可能进程CPU刻录(由于环路紧张)阻止了流式传输到控制台。

从技术上讲,虽然程序的行为未定义,但实质上,循环没有任何输入/输出或副作用。

允许编译器优化你的函数体,这也不会产生任何输出。