C 循环未执行时不停止之前的语句
为什么下面的函数不打印“只是开玩笑!” 当这是打印“贾斯汀开玩笑!”之后是不停的“只是在循环内开玩笑!” 谁能解释一下逻辑吗?你的第一个例子C 循环未执行时不停止之前的语句,c,while-loop,printf,C,While Loop,Printf,为什么下面的函数不打印“只是开玩笑!” 当这是打印“贾斯汀开玩笑!”之后是不停的“只是在循环内开玩笑!” 谁能解释一下逻辑吗?你的第一个例子 printf("Just kidding!"); 输出被缓冲,因此不显示 在第二个例子中 printf("Just kidding!\n"); 末尾的\n将刷新缓冲区,因此将显示字符串 在while循环insertfflush(stdout)之前的第一个示例中添加fflush(stdout)(或添加\n)。printf缓冲输出流。有时候,特别是
printf("Just kidding!");
输出被缓冲,因此不显示
在第二个例子中
printf("Just kidding!\n");
末尾的\n
将刷新缓冲区,因此将显示字符串
在while循环insert
fflush(stdout)之前的第一个示例中代码>添加fflush(stdout)第一个版本中的printf()
之后的code>(或添加\n
)。printf
缓冲输出流。有时候,特别是当你做一些奇怪的事情,比如无限循环时,你需要fflush
it.@David谢谢!它起作用了。但是“\n”是如何产生区别的。@Vasanth--stdout
是行缓冲的;添加\n
字符表示已到达行尾。据我所知,\n
是否会最终导致缓冲区刷新在某种程度上取决于实现。使用fflush()
绝对会强制输出缓冲区刷新。谢谢david。我现在明白了。如果stdout是在一个交互式设备上,它可能是在OP的情况下,那么\n
会刷新,否则不会。谢谢@Ed和dave
printf("Just kidding!");
printf("Just kidding!\n");