if语句在内部,而依赖于依赖的同一个变量

GAN*_*ANI 2 c conditional loops if-statement while-loop

考虑以下计划.我想知道为什么这些代码以不同的方式表现.提前提前.

这不打印任何

#include <stdio.h>

int main() {
    int i = 0;

    while(i < 10) {
        if(i < 7)
            printf("value is%d", i++); 
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然这样做

#include <stdio.h>
int main() {
    int i = 0;

    while(i < 10) {
        if(i < 7)
            printf("value is%d\n", i++);
    }
}
Run Code Online (Sandbox Code Playgroud)

kab*_*nus 5

首先请注意,您的程序永远不会退出 当它i击中7它的游戏时,你的卡住永远无所事事.

第二个注意事项唯一的区别是打印一个新行.这应该是你的线索.由于循环是无限的,你永远不会打印新的行或退出 - 两个东西都冲洗STDOUT.直到你刷新STDOUT,你只是在缓冲区中累积你想要打印的内容.只有冲洗才会在屏幕上显示,并清洁缓冲区.

@chux增加了一个好点:

STDOUT(或IN或ERR)的缓冲是实现定义的,意味着Linux,Windows等的不同风格可能显示不同的行为.显然在OP STDOUT中是缓冲的 - 因为没有输出.