c++ - C++ 控制台输出问题

标签 c++ c

#include <iostream>                                                             

using namespace std;

int main()
{
   cout << 1;
   while (true);
   return 0;
}

我认为这个程序应该打印 1 然后挂起。但它不打印任何东西,它只是挂起。 cout << endlcout.flush()可以解决这个问题,但我还是想知道为什么它没有按预期工作:) 此问题出现在 codeforces 期间比赛,我花了很多时间来研究我的程序的奇怪行为。不正确,它也挂了,隐藏的输出实际上是调试信息。

我尝试使用 printf (用 gcc 编译)它的行为和 cout 一样好, 所以这道题也可以引用C。

最佳答案

您写入缓冲区。您需要刷新缓冲区。正如@Guvante 提到的那样,使用 cout.flush()fflush(stdout) 进行 printf。

更新:

看起来 fflush 实际上与 cout 一起工作。但不要那样做 - 并非在所有情况下都是如此。

关于c++ - C++ 控制台输出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154715/

相关文章:

c - 使用命名信号量的死锁

objective-c - 如何在不实际更改的情况下重新排列 char* 的开头和结尾(索引方式)?

c - 如何使用 c 中的 write() 函数将整数 var 写入文件

c++ - 将 C 编译为 C++ 链接器错误(lua 和 oolua)

c++ - 奇怪的字符串初始化

c++ - 具有转换函数的 lambda 到指向具有 C++ 链接的函数的指针

c - #定义带逗号的表达式

c++ - 使用 OpenCV 的 3D 重建 C++..基本矩阵太大

C++:在簿记类中记录余额

c++ - 包装 C API 以供 C++ 使用的策略