【发布时间】:2017-12-08 16:27:46
【问题描述】:
考虑以下程序。 我想知道为什么这些代码的行为方式不同。提前谢谢你。
这不会打印任何内容
#include <stdio.h>
int main() {
int i = 0;
while(i < 10) {
if(i < 7)
printf("value is%d", i++);
}
}
虽然这样做
#include <stdio.h>
int main() {
int i = 0;
while(i < 10) {
if(i < 7)
printf("value is%d\n", i++);
}
}
【问题讨论】:
-
它叫冲洗
-
默认情况下标准输出是行缓冲的。这意味着(除非您填充一些内部缓冲区),它实际上不会打印任何内容,直到您打印换行符、刷新标准输出或程序退出(这会强制刷新标准输出)。您的第一个程序从不打印换行符、刷新标准输出或退出。
-
程序终止时也会发生刷新。但是由于您的程序永远不会停止,因此不会发生这种情况。
标签: c loops if-statement while-loop conditional