这个程序中为什么要有fflush()

这个程序中为何要有fflush()?
#include <stdio.h>
#include <unistd.h>
int main()
{
    int i = 0;
    while(1)
    {
         sleep(1);
         printf("%d\r", i++);
         fflush(stdout);    //我认为没有fflush也应该正常工作啊,为什么这里的printf()并没有及时输出结果呢?
    }
    return 0;
}

------解决方案--------------------
printf要把缓冲区的内容打印在屏幕上需要几个条件:我了解的是:
1)遇到'\n';
2)缓冲区满了;
3)fflush(stdout);