问题阐述
死循环是指:程序无法退出或者无法进入下一次循环。那么什么情况会产生死循环呢?
专家解答
1.问题的产生
在C语言中常用3种循环语句,这些循环语句各有其特点,while和do…while经常用在循环次数不确定的场合;for被经常用来遍历数组和集合。在使用这些循环语句过程中,若其循环结束条件处理不当,则很可能产生死循环。下面看一个例子,代码如下:
#include
void main()
{
unsignedint i; /*定义无符号整型变量*/
for(i=10;i>=0;i--)
{
printf("%d ",i); /*输出*/
}
printf("\n"); /*输出回车*/
}
程序本意是将每次得到的计数变量的值输出出来,结果由于疏忽导致程序死循环,程序运行效果如图8.18所示:
2.问题分析与解决
for语句的循环结束条件是当条件表达式的值为false时。上面实例中的计数变量i被定义为unsigned类型,这样i>=0就永远成立。所以程序进入了死循环。
下面为另外两种常用的循环语句的判断条件:
qwhile语句的循环结束条件是当布尔表达式的值为false时。
qdo…while语句的循环结束条件是当布尔表达式的值为false时。
注意:使用do…while语句时要注意循环次数的判断,因为do…while语句是先执行循环体后进行判断。
解决本例的办法就是将计数变量i定义为int型。这样就不会出错了。程序的正确运行效果如图8.19所示。
说明:在实际的应用程序开发中,产生死循环的情况比较复杂,并不完全像本实例中的情况,但归根结底都是由循环结束条件处理不当造成的,下面将对这些方法进行详细的分析。
专家点评
在循环程序中应避免出现死循环,即应保证循环变量的值在运行过程中可以得到修改,并使循环条件逐步变为假,从而结束循环。
关于【C语言编程锦囊】,可能你还想知道:
领取专属 10元无门槛券
私享最新 技术干货