代码之前(1)不运行

时间:2016-02-24 15:47:23

标签: c ansi-c

我的代码如下:

#include <stdio.h>

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

    while(1){
        // whatever here
    }
}

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

2 个答案:

答案 0 :(得分:5)

运行,只是输出缓冲区未在while之前刷新

请改用printf("hello\n");。换行符将刷新缓冲区,以便立即将输出写入控制台。

答案 1 :(得分:3)

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

fflush(stdout)之后使用printf("hello"),这会强制打印stdout。

而且,正如@Bathsheba指出的那样,"\n"中的换行符(printf)也会强制它进行刷新,这可以解释为in this SO question