cout 在无限循环的情况下不起作用
cout not working in the case of an infinite loop
int main(int argc, char* argv[])
{
while(1)
{
cout<<"123";
}
return 0;
}
我写了这个小程序,它会打印“123”,然后进入无限循环。但它不会在屏幕上打印任何内容。这是什么原因?
可能有两个原因。
首先,输出很可能被缓冲了。也就是说,发送到 cout
的文本不会立即打印,而是保存在缓冲区中并仅在刷新缓冲区时打印(这发生在 cout.flush()
或打印 endl
)。
其次,我假设一个空的无限循环is undefined behavior。也就是说,一个无限循环的程序实际上可以做任何事情;特别是,允许优化器优化程序之外的任何内容。
很可能进程 CPU burn(由于紧密循环)阻止了流式传输到控制台。
从技术上讲,尽管您的程序的行为是未定义的,因为从本质上讲,循环没有任何输入/输出或副作用。
允许编译器优化您的函数体,这也不会产生任何输出。
int main(int argc, char* argv[])
{
while(1)
{
cout<<"123";
}
return 0;
}
我写了这个小程序,它会打印“123”,然后进入无限循环。但它不会在屏幕上打印任何内容。这是什么原因?
可能有两个原因。
首先,输出很可能被缓冲了。也就是说,发送到 cout
的文本不会立即打印,而是保存在缓冲区中并仅在刷新缓冲区时打印(这发生在 cout.flush()
或打印 endl
)。
其次,我假设一个空的无限循环is undefined behavior。也就是说,一个无限循环的程序实际上可以做任何事情;特别是,允许优化器优化程序之外的任何内容。
很可能进程 CPU burn(由于紧密循环)阻止了流式传输到控制台。
从技术上讲,尽管您的程序的行为是未定义的,因为从本质上讲,循环没有任何输入/输出或副作用。
允许编译器优化您的函数体,这也不会产生任何输出。