为什么无限循环会延迟打印?

时间:2018-06-30 08:57:42

标签: c++ c++11

这是一个背景故事,如果您不想阅读它,可以跳到下面的粗体问题。

最近在解决问题时,我不小心遇到了无限循环。但是我不知道,所以我尝试调试代码,很显然,调试的一种好方法(或者至少是我习惯的一种方法)是在代码中放置一些标志,这些标志会打印到控制台在该部分之前,程序已成功完成。但是后来我看到,即使将标志放在程序的第一位,它仍然不会打印任何内容。我设法通过使用return 0而不是放置标志来查找错误,但这让我感到奇怪,

为什么以下程序没有立即打印“ A”?

#include<bits/stdc++.h>
using namespace std;
int main(){
    cout<<"A";
    int k=1;
    while(k)k++;
}

编辑:即使将cout<<"A";更改为cout<<"A"<<endl;,问题仍然存在。 我正在使用C ++ 14 GNU GCC编译器

1 个答案:

答案 0 :(得分:2)

这是因为默认情况下输出是缓冲的,所以您要把它留给程序来决定何时将输出实际呈现到屏幕上。

如果您使用cout<<"A"<<endl;进行强制设置,则会立即得到冲洗并按照您的期望进行打印。