int main()
{
printf("main started");
for(;;) {}
return 0;
}
问题是它不打印“主要启动”。for 循环中的内容以及循环之前有多少语句都无关紧要。
int main()
{
printf("main started");
for(;;) {}
return 0;
}
问题是它不打印“主要启动”。for 循环中的内容以及循环之前有多少语句都无关紧要。
在输出的末尾添加一个换行符。没有它,文本会进入输出缓冲区,但不会被刷新。
您需要刷新输出:
fflush(stdout);
或者,按字符终止字符串,\n
因为大多数系统都有行缓冲标准输出。
您打印的printf()
内容保存在缓冲区中。这意味着它不会立即发送到您的控制台。但是,此缓冲区已刷新:
\n
) 时,因此,在您的情况下,要立即看到它,请添加 afflush(stdout)
或 a do printf("main started\n")
。
printf
仅在刷新字符串后打印字符串。如果您\n
在字符串中添加(换行符)符号,它会自动刷新数据(虽然它通常有效,但不能保证!不要依赖它)。当程序完成时,数据也会自动刷新——在从主函数返回或调用exit
.
在您的情况下,由于没有条件的 for 循环,程序永远不会完成,因此永远不会调用 autoflush
如果你想冲洗它,你可以强制冲洗自己打电话fflush(stdout)
。退出时会自动调用相同的函数。
请参阅我之前提出的关于自动刷新的标准保证的类似问题。退出前是否保证标准输出自动刷新?它是如何工作的?