gpt4 book ai didi

c - 意外的无限 for 循环

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

我是 C 初学者,我正在尝试 for 循环,我遇到了一个无限循环,它不应该是一个无限循环,任何人都可以帮助我理解为什么它是一个无限循环

void main()
{
int i;

for(i=1,printf("Initialization");i++ <=5,printf("\nCondition");printf("%d",i))

printf("\nInside the loop :");
}

虽然这不是无限循环

void main()
{
int i;

for(i=1,printf("Intialization");printf("\nCondition"),i++<= 5;printf("%d",i))

printf("\nInside the loop\n");
}

最佳答案

原因是你的循环条件(两个分号之间)如下所示:

i++ <=5, printf("\nCondition") // First loop
printf("\nCondition"), i++<= 5 // Second loop

两个条件都是逗号表达式,这意味着只有最后一部分对于生成值很重要(尽管这两个部分都有其副作用)。

第一种情况,整体条件结果是printf("\nCondition")返回。它总是返回非零*,解释为“true”,因此循环是无限的。

第二种情况,总体结果是 i++<=5返回,一开始为“true”,五次迭代后变为“false”。那是第二个循环终止的时候。

* 具体来说,printf返回打印的字符数,因此在您的情况下为 10。不过,这对于理解为什么循环是无限的并不重要。

关于c - 意外的无限 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40201817/

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