有时,使用printf("a=%d",a);并不一定会输出显示,只有当在格式化输出时加上'\n'才能输出,如printf("a=%d\n",a);
由于unix上标准输入输出都是带有缓存的,一般是行缓存。对于标准输出,需要输出的数据并不是直接输出到终端上,而是首先缓存到某个地方,当遇到行刷新标志或者该缓存已满的情况下,才会把缓存的数据显示到终端设备上。ANSI C中定义换行符'\n'可以认为是行刷新
标志。所以,printf函数没有带'\n'是不会自动刷新输出流,直至缓存被填满才会刷新输出流。
下面情况下会刷新缓存:
1 强制刷新标准输出缓存fflush(stdout);
2 放到缓冲区的内容中包含\n;
3 缓冲区已满;
4 需要从缓冲区拿东西到时候,如执行scanf;