#include <iostream>
using namespace std;
int main()
{
cout << 1;
while (true);
return 0;
}
我认为这个程序应该打印 1 然后挂起。但它不打印任何东西,它只是挂起。
cout << endl
或 cout.flush()
可以解决这个问题,但我还是想知道为什么它没有按预期工作:)
此问题出现在 codeforces 期间比赛,我花了很多时间来研究我的程序的奇怪行为。不正确,它也挂了,隐藏的输出实际上是调试信息。
我尝试使用 printf
(用 gcc 编译)它的行为和 cout
一样好, 所以这道题也可以引用C。
最佳答案
您写入缓冲区。您需要刷新缓冲区。正如@Guvante 提到的那样,使用 cout.flush()
或 fflush(stdout)
进行 printf。
更新:
看起来 fflush
实际上与 cout 一起工作。但不要那样做 - 并非在所有情况下都是如此。
关于c++ - C++ 控制台输出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154715/