我在while循环中有一个关于打印输出指令的问题。示例代码就像。
int main() {
bool flag=true;
int cnt = 0;
while(flag) {
cout << ". ";
for (long i = 0; i < 100000; ++i)
for (long j = 0; j < 100000; ++j) ;
if (++cnt > 10) flag = false;
}
return 0;
}
我期待的是,&#39;。&#39;在执行期间每次都会在控制台中显示。但实验表明,所有这些点都会同时出现,在我的理解中,在整个执行过程之后,这些点将打印到控制台。
任何人都可以帮我解释一下吗?我是否错了,这些实际上是在执行期间一个接一个地显示并且只是因为执行速度?或者这就是问题,在while循环结束之前,所有内容都会被缓存。
我在GDB中逐步运行它,它在循环执行期间执行该行。
答案 0 :(得分:1)
cout是缓冲的。使用
cout << ". " << flush;
一次一个地将char输出到控制台。