C ++中while循环执行中的printout语句

时间:2014-06-05 02:56:11

标签: c++ while-loop

我在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中逐步运行它,它在循环执行期间执行该行。

1 个答案:

答案 0 :(得分:1)

cout是缓冲的。使用

cout << ". " << flush;

一次一个地将char输出到控制台。