-2

我有如下代码:

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("hello");

    while(1){
        // whatever here
    }
}

问题是:为什么第一条指令被跳过?它只运行循环,永远不会打印你好。我用 gcc 和 g++ 编译它,结果相同。

4

2 回答 2

5

确实运行,只是输出缓冲区没有您的while.

改为使用printf("hello\n");。换行符将刷新缓冲区,因此立即将输出写入您的控制台。

于 2016-02-24T15:48:49.660 回答
3

您的假设是错误的,您的代码确实运行,只是stdout没有刷新,而是缓冲。

使用fflush(stdout)after printf("hello"),这会强制打印标准输出。

而且,正如@Bathsheba 所指出的,还有一个换行符 ( "\n")printf强制它刷新,这在这个 SO question中有解释。

于 2016-02-24T15:48:47.267 回答