while(1) 之前的代码不 运行

Code before while(1) does not run

我有如下代码:

#include <stdio.h>

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

    while(1){
        // whatever here
    }
}

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

你的假设是错误的,你的代码 运行,只有 stdout 没有被刷新,但是被缓冲了。

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

而且,正如@Bathsheba 指出的那样,printf 中的换行符 ("\n") 也强制刷新,这在 in this SO question.

中进行了解释

确实 运行,只是输出缓冲区在您的while之前没有刷新

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