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