标签:cout .net info 函数 tar window target 输入 缓冲区
只有当一下三种情况printf()的缓冲区才会自动刷新。输出到屏幕。
1.缓冲区满的时候。
2.遇到换行符的时候。
3.需要输入的时候。
当程序正常结束时,属于该程序的缓冲区也将被清空(刷新);
举个例子借助理解一下:
#include <stdio.h> int main(){ printf("begin\n"); for(int i=0;i<=10;i++){ printf("a"); if(i==5) while(1); } return 0; }
这个代码的输出情况是这样的:
当第一个输出。缓冲区遇到\n换行符时,直接输出了begin
而当for循环中,i从1-5的输出printf并没有换行符也没有要输入。所以缓冲区一直没刷新。没能将数据传给显示设备。然后遇到while(1)死循环。缓冲区不会遇到刷新条件。没有输出了。。
有一点要注意的事。windows下的printf和cout是没有缓冲的。。所以以上的问题不适于windows.
windows会直接输出
今天写这个是想到以前遇到的一些printf()问题。。以为是玄学。。只不过是触及到了知识盲区罢了。。
相关的知识可以参考这篇博客,写得更为详细:https://blog.csdn.net/qq_20240999/article/details/59056484
标签:cout .net info 函数 tar window target 输入 缓冲区
原文地址:https://www.cnblogs.com/qq1028152659/p/9114467.html