gpt4 book ai didi

c - while循环中的奇怪输出(C语言)

转载 作者:行者123 更新时间:2023-11-30 20:29:23 25 4
gpt4 key购买 nike

我刚开始学习C,不明白为什么下面的代码段会输出30。为什么每次迭代都不输出数字。

int k=3, f=3;
while (k<10)
K++;
f*=k;
printf("%d", f);

当添加大括号时,它输出 1814400,在我看来这是正确的输出

int k=3, f=3;
while (k<10){
K++;
f*=k;
}
printf("%d", f);

您能解释一下为什么输出不同吗?

最佳答案

在第一个片段中,这段代码

while (k<10)
K++;

k增加到10。下一条语句 f*=k; 不是循环的一部分。因此它在循环后执行,将 f 设置为 30

在第二个代码段中,K++;f*=k; 都是循环体的一部分,因此每次运行循环时都会执行它们.

如果你正确缩进它会更清楚:

int main()
{
int k = 3, f = 3;
while (k < 10)
k++;
f *= k;
printf("%d", f);
}

现在很明显,f *= k; 不是第一个代码片段中循环的一部分。

为了澄清,here's解释语法的文档:

while ( expression ) statement

只有while()后面的语句才是循环的一部分。使用大括号{},您将得到一个复合语句作为循环的主体。

<小时/>

另请注意,kK 不同,它不会以这种方式编译,但我猜这是粘贴时发生的一些自动格式化代码。

关于c - while循环中的奇怪输出(C语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58287522/

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