int main()
{
printf("main started");
for(;;) {}
return 0;
}
问题是它不打印“主要开始”。 for循环中的内容和循环之前有多少语句无关紧要。
答案 0 :(得分:2)
在输出的末尾添加换行符。如果没有它,文本将进入输出缓冲区但不会被刷新。
答案 1 :(得分:2)
您需要刷新输出:
fflush(stdout);
或者,用\n
字符终止字符串,因为大多数系统都有行缓冲标准输出。
答案 2 :(得分:1)
printf
仅在刷新后打印字符串。如果在字符串中添加\n
(换行符号)符号,它会自动刷新数据(虽然通常有效,但无法保证!不要依赖它)。程序完成后,数据也会自动刷新 - 从主函数返回或调用exit
后。
在你的情况下,由于没有条件的for循环,程序永远不会完成,因此永远不会调用autoflush
如果你想要冲洗它,你可以强迫自己冲洗fflush(stdout)
。退出时会自动调用相同的函数。
请参阅我之前提到过的有关自动冲洗的标准保证的类似问题。 Is there a guarantee of stdout auto-flush before exit? How does it work?
答案 3 :(得分:1)
使用printf()
打印的内容保存在缓冲区中。这意味着它不会立即发送到您的控制台。但是,刷新了这个缓冲区:
\n
)时,因此,在您的情况下,要立即查看,请添加fflush(stdout)
或执行printf("main started\n")
。