这是一个背景故事,如果您不想阅读它,可以跳到下面的粗体问题。
最近在解决问题时,我不小心遇到了无限循环。但是我不知道,所以我尝试调试代码,很显然,调试的一种好方法(或者至少是我习惯的一种方法)是在代码中放置一些标志,这些标志会打印到控制台在该部分之前,程序已成功完成。但是后来我看到,即使将标志放在程序的第一位,它仍然不会打印任何内容。我设法通过使用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编译器
答案 0 :(得分:2)
这是因为默认情况下输出是缓冲的,所以您要把它留给程序来决定何时将输出实际呈现到屏幕上。
如果您使用cout<<"A"<<endl;
进行强制设置,则会立即得到冲洗并按照您的期望进行打印。