#include <stdio.h>
int main()
{
printf("hello bite!");
sleep(2);
return 0;
}
执行此代码后,会 先停顿两秒,再打印出hello bite
,但是明明打印在sleep前面,为什么会后打印呢?
因为:
- 在printf执行完了后,打印的内容被存到了缓冲区
- 程序快结束时缓存区的内容再打印到显示器
奇妙的事情发生了:
#include <stdio.h>
int main()
{
printf("hello bite!\n");
sleep(3);
return 0;
}
如果我们使用这样的代码,会 先打印出hello bite,再停顿两秒
,为啥捏?
可以发现和上面的代码对比多了一个/n
- 显示器有一种刷新策略,叫
行刷新
- 而
/n正好代表着换行
,所以加了/n的内容会直接从缓存区打印到显示器上
,不用等程序结束
那么我们有没有办法 不用\n也能先打印呢?
包有的:
#include <stdio.h>
int main()
{
printf("hello bite!");
fflush(stdout);
sleep(3);
return 0;
}
- 这里的fflush(stdout)就起到了
刷新的作用