c - while 中的 if 语句依赖于 while 依赖的同一个变量

标签 c loops if-statement while-loop conditional-statements

考虑以下程序。 我想知道为什么这些代码以不同的方式表现。提前谢谢你。

这不会打印任何内容

#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++);
    }
}

最佳答案

首先请注意,您的两个程序都不会退出。当 i 达到 7 时,游戏就结束了,您将永远无所事事。

第二个注意,唯一的区别是打印一个新行。那应该是你的线索。由于循环是无限的,因此您永远不会打印新行或退出 - 两者都会刷新 STDOUT。在刷新 STDOUT 之前,您只是在缓冲区中累积要打印的内容。只有冲洗才能将其显示在屏幕上,并清理缓冲区。

@chux 补充了一点:

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

关于c - while 中的 if 语句依赖于 while 依赖的同一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44918835/

相关文章:

c++ - 如何在 Apache 中托管 C 程序?

计算导数,给定数据文件

Java - 制作刽子手游戏

python - 简化if语句python

c - 负函数表现疯狂

c++ - 为什么节点*左,*右而不是节点*左,右?

python - 跳过枚举列表对象中的迭代(python)

string - R中的算法/代码从字符串中的任何位置查找模式

r - dplyr 使用 if else 有条件地按组过滤

python-3.x - 如何在列表中追加项目以供稍后在 If 语句中使用