gpt4 book ai didi

c - C 中的 for 循环导致无限循环的示例

转载 作者:行者123 更新时间:2023-11-30 19:59:48 25 4
gpt4 key购买 nike

以下程序被引用为进入无限循环:

#include<stdio.h> 
int main()
{
int n;
for(n = 7; n!=0; n--)
printf("n = %d", n--);
getchar();
return 0;
}

经过分析,我确实发现在某一时刻 n 的值确实变成了 0,就在那时,循环应该终止。会不会出现这样的情况:第一次进入循环时,值为 7,然后变为 6,并且每次迭代都有 2 次后递减?但是,为什么没有发生呢?

最佳答案

每次循环迭代实际上都会将 n 减少 2,并且比较 n != 0 总是看到 i 为奇数,因此永远不会终止。

特别是,就在所讨论的迭代之前,n 首先在循环头中按 n-- 递减到 1(因为这必须发生在上一次迭代结束之后,就在求值之前)条件n!=0)。

然后,printf("n = %d", n--); 被求值,打印 n = 1,而 postn 递减至零。循环体结束后,在计算条件 n!=0 之前,循环头中的 n 再次递减 n--,使其变为 -1以确定循环是否应该继续。

因此,n!=0 每次计算时都为 true(特别是,在 n 为零时不会计算它,因为 n-- 循环头中必须首先完成)

关于c - C 中的 for 循环导致无限循环的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53024695/

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