c语言for(i=5;i;i--)i--循环多少次
发布网友
发布时间:2022-05-10 14:39
我来回答
共5个回答
热心网友
时间:2023-10-12 02:32
语句是个死循环,执行无数次。
第1次循环:i=5, 执行循环体i--,i=4,再执行1次i--,i=3
第2次循环:i=3,执行循环体i--,i=2,再执行1次i--,i=1
第3次循环:i=1,执行循环体i--,i=0,再执行1次i--,i = -1
.....然后就进入死循环啦。
热心网友
时间:2023-10-12 02:33
条件这样写会是个死循环出不来!
原因:初始时i的值为5,此时判断i为真(不为0),执行函数体中的i--,此时i值为4,然后返回for中的第三项,对i再进行--,此时i值变为3,进入for的第二项判断条件i为3,不为0(即不为假,条件符合,进入循环体)
第二次进入循环体时,执行i--,此时i值变为2,然后从函数体中出来,执行for第三项i--,此时i值变为1,然后进入for条件中的第二项即判断i是否为0(即条件是否为真),因为此时i值为1,相当于条件为真,故再次进入循环体中
第三次进入循环体,执行i--,i的值变为0,如果此时判断条件就可以退出循环了,但是,还没有执行for的第三项呢,故先执行for第三项i--,此时i值为-1,不为0,即判断条件i不为假,条件成立,会再次进入循环体中
接下来就没有条件为0的时候了,故成了死循环出不来了
将i初始值改为4,可以刚好到0的时候进行判断i,此时就可以循环两次退出了
问题的关键是你没有搞清楚for循环()中的三个语句的执行循序:依次为
(1)赋初值:i=5//只在刚开始时进行1次
(2)判断条件:i//看第二项条件是否为真,是真进入循环体,否则退出循环
(3)循环体:执行循环体语句i--
(4)计数操作:即第三项i--,然后转入(2)直到退出为止,否则就死循环了
这样解释你明白了吧?呵呵,希望对你有帮助
热心网友
时间:2023-10-12 02:33
for(i=5;i;i--)i--;
这一句其实相当于
for(i=5;i;i-=2);
也就是说:
第一轮循环:i=5
第二轮循环:i=3
第三轮循环:i=1
第四轮循环:i=-1
第五轮循环:i=-3
……………………
这时i的值总是非零值,所以循环不会终止。
取掉一个i--,才会遇到i=0的情况而停止,比如改为
for(i=5;i;i--);
或
for(i=5;i;)i--;
热心网友
时间:2023-10-12 02:34
循环无限次。
第一次是i=5执行后i=3
第二次I=3执行后i=1
第三次i=1该次循环执行后i=-1
第四次i=-1这个for判断语句不成立
这个循环相当于
i=5;
for(;i!=0;){
i--;
i--;}
热心网友
时间:2023-10-12 02:34
五次,当i=0时结束,for循环将I当作布尔逻辑运算来做,若初始值为-1,则循环无数次。