鱼C论坛

 找回密码
 立即注册
查看: 2049|回复: 7

NO.226 for 无限循环

[复制链接]
发表于 2022-2-24 18:19:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 我爱橙 于 2022-2-25 10:29 编辑
#include <stdio.h>

int main()
{
        int j,k;
        
        for (j=0,k=-1;k=1;j++,k++)
        {
                printf("****\n");
                }
                         
        return 0;
}

条件是k=1循环,那是2不应该就结束循环了吗,为什么会无限循环呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-24 18:21:12 | 显示全部楼层
本帖最后由 isdkz 于 2022-2-24 18:24 编辑


= 是赋值表达式,赋值表达式的值就是右边的值,所以循环条件恒为 -1 ,不为 0,所以就是True,就死循环了

下面这个代码是不会有输出的,因为 k 的值为 -1 不会进入循环,
#include <stdio.h>

int main()
{
        int j,k;
        
        for (j=0,k=-1;k==1;j++,k++)         // =是赋值,==才是判断
        {
                printf("****\n");
                }
                         
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-24 18:30:45 | 显示全部楼层
isdkz 发表于 2022-2-24 18:21
= 是赋值表达式,赋值表达式的值就是右边的值,所以循环条件恒为 -1 ,不为 0,所以就是True,就死循环了 ...

可是用==判断也还是死循环啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-24 18:43:23 | 显示全部楼层
我爱橙 发表于 2022-2-24 18:30
可是用==判断也还是死循环啊

那你用 == 判断也不能让这个条件恒成立呀,得有不满足条件的时候
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-24 19:59:38 From FishC Mobile | 显示全部楼层
本帖最后由 爱上pc的Qt 于 2022-2-24 20:03 编辑

循环当中要注意的是循环条件,
循环条件在第一次进入循环的时候就判断了不满足,那么这个循环的循环体是一次都不会执行的。
这里你的程序K =-1,循环条件又是K==1,那么这就是不满足进入循环的条件。
换句话说,你这个循环写出来,连开始都没开始,就结束了。
你可以搜一下,循环条件不满足,但是可以执行一次的只有do -while循环结构。其他的循环,不管是while还是for,只要条件不满足,都不会继续循环。那么当然的,如果第一次循环的条件就是不满足的,那么就不会进入循环体。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-24 20:05:13 From FishC Mobile | 显示全部楼层
我爱橙 发表于 2022-2-24 18:30
可是用==判断也还是死循环啊

这个不是死循环。死循环的话就是一直进行循环体语句的执行,拿你的程序来看,如果是死循环这里就是满屏的*
这个是根本没有进入循环的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-24 20:10:09 From FishC Mobile | 显示全部楼层
爱上pc的Qt 发表于 2022-2-24 20:05
这个不是死循环。死循环的话就是一直进行循环体语句的执行,拿你的程序来看,如果是死循环这里就是满屏的 ...

不好意思,看错了。K=1的是死循环,K==1的是不循环。楼上说的是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-25 08:49:40 | 显示全部楼层
isdkz 发表于 2022-2-24 18:43
那你用 == 判断也不能让这个条件恒成立呀,得有不满足条件的时候

嗯嗯,之前看错==的地方了,所以是如果第二个条件表达式用==不循环是因为k==1的循环条件和k=-1的初始不等为假,对吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 08:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表