gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 15:09:23 25 4
gpt4 key购买 nike

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

这不会打印任何内容

#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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com