Cout在无限循环的情况下不起作用

cout not working in the case of an infinite loop

本文关键字:情况下 不起作用 无限循环 Cout      更新时间:2023-10-16
int main(int argc, char* argv[]) 
{
    while(1)
    {
        cout<<"123";
    }
    return 0;
}

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

可能有两个原因。

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

其次,我假设空无限循环是未定义的行为。也就是说,具有无限循环的程序实际上可以做任何事情;特别是,允许优化器优化程序之外的任何内容。

很可能是进程CPU burn(由于紧循环)阻塞了流到控制台。

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

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