我编写了以下程序:
#include <cstdio>
#include <ctime>
int main()
{
time_t t;
int d;
printf("nHello 1");
time(&t);
d=t;
while (t-d<3) /*wait 3 seconds*/
{
time(&t);
}
printf("nHello 2");
time(&t);
d=t;
while (t-d<3) /*wait 3 seconds*/
{
time(&t);
}
printf("nHello 3");
return 0;
}
在构建程序之后,我运行它;你好1";。
为什么它是先写后执行的?
在某些操作系统上,输出缓冲区stdout
通常需要为";"冲洗";以便使您在那里打印的内容显示在屏幕上。CCD_ 2充当";"冲洗";这就解释了这种行为。
您可以通过在每个printf
之后添加一个fflush(stdout);
调用来解决此问题。这将强制屏幕更新。或者,将n
移动到每行的末尾,而不是开始处。
基本上,您需要刷新缓冲区。所以最简单的事情就是从printf("nHello 1");
转移到printf("Hello 1n");
试试这个https://onlinegdb.com/u5L2xtwgf