NO.226 for 无限循环
本帖最后由 我爱橙 于 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不应该就结束循环了吗,为什么会无限循环呀 本帖最后由 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;
} isdkz 发表于 2022-2-24 18:21
= 是赋值表达式,赋值表达式的值就是右边的值,所以循环条件恒为 -1 ,不为 0,所以就是True,就死循环了 ...
可是用==判断也还是死循环啊 我爱橙 发表于 2022-2-24 18:30
可是用==判断也还是死循环啊
那你用 == 判断也不能让这个条件恒成立呀,得有不满足条件的时候 本帖最后由 爱上pc的Qt 于 2022-2-24 20:03 编辑
循环当中要注意的是循环条件,
循环条件在第一次进入循环的时候就判断了不满足,那么这个循环的循环体是一次都不会执行的。
这里你的程序K =-1,循环条件又是K==1,那么这就是不满足进入循环的条件。
换句话说,你这个循环写出来,连开始都没开始,就结束了。
你可以搜一下,循环条件不满足,但是可以执行一次的只有do -while循环结构。其他的循环,不管是while还是for,只要条件不满足,都不会继续循环。那么当然的,如果第一次循环的条件就是不满足的,那么就不会进入循环体。 我爱橙 发表于 2022-2-24 18:30
可是用==判断也还是死循环啊
这个不是死循环。死循环的话就是一直进行循环体语句的执行,拿你的程序来看,如果是死循环这里就是满屏的*
这个是根本没有进入循环的问题。 爱上pc的Qt 发表于 2022-2-24 20:05
这个不是死循环。死循环的话就是一直进行循环体语句的执行,拿你的程序来看,如果是死循环这里就是满屏的 ...
不好意思,看错了。K=1的是死循环,K==1的是不循环。楼上说的是对的 isdkz 发表于 2022-2-24 18:43
那你用 == 判断也不能让这个条件恒成立呀,得有不满足条件的时候
嗯嗯,之前看错==的地方了,所以是如果第二个条件表达式用==不循环是因为k==1的循环条件和k=-1的初始不等为假,对吧?
页:
[1]