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
发生的)。
其次,我假设空无限循环是未定义的行为。也就是说,具有无限循环的程序实际上可以做任何事情;特别是,允许优化器优化程序之外的任何内容。
很可能是进程CPU burn(由于紧循环)阻塞了流到控制台。
从技术上讲,程序的行为是未定义的,因为本质上,循环没有任何输入/输出或副作用。
允许编译器优化你的函数体,这也不会产生任何输出。
相关文章:
- G++ C++17 类模板参数推导在非常特殊的情况下不起作用
- EOF有更安全的替代方案吗?它在我的情况下不起作用
- c++ 选择排序在特定情况下不起作用
- 寻找有关为什么此C++代码在没有引用的情况下不起作用的解释
- 句子转换器在存在新行的情况下不起作用
- 为什么 std::void_t 在这种情况下不起作用
- C++中的dynamic_cast在没有 RTTI 的情况下不起作用;为什么?
- 为什么SFINAE在这种情况下不起作用?
- 运算符重载如何工作,为什么在我的情况下不起作用?
- 请帮助我理解为什么SFINAE在这种情况下不起作用
- 为什么#ifndef在这种情况下不起作用
- 为什么c_str在这种打开(文件名)的情况下不起作用
- ADL在特定情况下不起作用
- FillRect在某些情况下不起作用
- C++预处理器宏中的代码块在没有大括号的情况下不起作用
- 为什么cvPutText在这种情况下不起作用?
- Boost的ASIO + SSL在某些情况下不起作用
- 为什么贪婪的方法在这种情况下不起作用?
- 使用带有指针和文件的类概念 我的代码在第一种情况下不起作用,为什么?
- 为什么 std::function<boost::any ()> 在这种情况下不起作用?