Printf()在";之前未执行;而(1)";Linux下C语言中的循环

Printf()在";之前未执行;而(1)";Linux下C语言中的循环,c,linux,gcc,C,Linux,Gcc,我注意到以下代码有些奇怪 int main() { printf("Test"); // Section 1 do something here.... while(1) { ; } } 应该首先执行第1节,然后程序应该在while循环中卡住。 但结果是“测试”并没有打印出来,但它卡在了while循环中。我想知道为什么第1节中的代码没有被执行 我在Ubuntu14.04 LTS上运行了代码(使用默认的gcc编译器编译)s

我注意到以下代码有些奇怪

int main()
{
     printf("Test");      // Section 1 do something here....

     while(1)
     {
           ;
     }
}
应该首先执行第1节,然后程序应该在while循环中卡住。 但结果是“测试”并没有打印出来,但它卡在了while循环中。我想知道为什么第1节中的代码没有被执行


我在Ubuntu14.04 LTS上运行了代码(使用默认的gcc编译器编译)

stdout流是缓冲的,因此它只会在到达换行符后显示缓冲区中的内容。加:

fflush(stdout);
行后:

printf("Test");
有关其他备选方案,请参见。

这必须适用于:

#include <stdio.h>

int main() {
    printf("Test");
    while(1){}
}
执行:

./a.out

printf
已缓冲。在末尾添加一个
\n
,以刷新缓冲输出。或调用
fflush(stdout)在循环之前。如果它仍然无法打印,我们将重新讨论GCC是否生成错误的代码:)如此多的副本。。。要挑哪一个?@paddy:从第一个中挑一个。这么多副本-为什么没人能搜索?还有,世界上有谁投票支持这一点?请不要回答重复的。。。取而代之的是关闭投票/旗帜。
./a.out