c语言;for(i=1 i<=100 i--)为什么循环不停?请用白话解释一下

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-01
c语言;for(i=1 i<=100 i--)为什么运行时i会等于0,而导致成了死循环?

i初始值是1,本身就小于等于100,条件居然是i--,那永远都突破不了这个条件

这是错误语句,应该是for(i=1;i<=100;i--)。
首先要说明,当i被声明为int型时,它不会循环不停,只是循环次数很多,但最后还是会停下来。由于for(i=1;i<=100;i--)中当i<=100时继续循环,而i的初值是1,<=100为“真”,进入循环;然后i--使i的值减1为0,<=100仍为“真”,也循环;i==-1、-2、-3……情况也仍能使i<=100为“真”,所以会继续循环……但是,计算机能表示的值是有范围的,当i减小到int能表达的最小值时会产生溢出突然变为一个很大的正数,这时i<=100不再成立,就会停止循环!

这是错误语句,应该是for(i=1;i<=100;i--)。
首先要说明,当i被声明为int型时,它不会循环不停,只是循环次数很多,但最后还是会停下来。由于for(i=1;i<=100;i--)中当i<=100时继续循环,而i的初值是1,<=100为“真”,进入循环;然后i--使i的值减1为0,<=100仍为“真”,也循环;i==-1、-2、-3……情况也仍能使i<=100为“真”,所以会继续循环……但是,计算机能表示的值是有范围的,当i减小到int能表达的最小值时会产生溢出突然变为一个很大的正数,这时i<=100不再成立,就会停止循环!

for(i=1;i<=100;i++); 单单这个语句的话……做100个空循环,因为FOR循环体为空。 先是i=1, 再是看i是否小于等于100,如果满足这个条件,那么({什么也不做},i++),进行下一轮循环。 如果不满足,跳出这个循环。 注意: i++ 是for 循环体执行完后最后才执行的语句,执行顺序在FOR循环体后。