一、问题
死循环是指程序⽆法退出或者⽆法进⼊下⼀次循环。那么,什么情况会产⽣死循环呢?
二、解答
1、问题的产⽣
C语⾔中常⽤3种循环语句,这些循环语句各有特点,while 和 do...while 经常⽤在循环次数不确定的场合;for 被经常⽤来遍历数组和集合。在使⽤这些循环语句过程中,若其循环结束条件处理不当,则很可能产⽣死循环。下⾯看⼀个例⼦,代码如下。
#include <stdio.h>
int main()
{
unsigned int i;
for (i = 10; i >= 0; i--)
{
printf("%d ", i);
}
printf("\n");
return 0;
}
程序本意是将每次得到的计数变量的值输出出来,结果由于疏忽导致程序死循环
2、问题分析与解决⽅法 for 语句的循环结束条件是当条件表达式的值为 false 时。上⾯实例中的计数变量i被定义为 unsigned 类型,这样i>=0 就永远成⽴,所以程序进⼊了死循环。下⾯是另外两种常⽤的循环语句的判断条件:
(1)while 语句的循环结束条件是当布尔表达式的值为 false 时。
(2)do...while 语句的循环结束条件是当布尔表达式的值为 false 时。
注意:
使⽤ do...while 语句时要注意循环次数的判断,因为 do...while 语句是先执⾏循环体后进⾏判断。
解决本例的办法就是将计数变量i定义为 int 型,这样就不会出错了。程序的正确运⾏结果
10 9 8 7 6 5 4 3 2 1 0
说明:
在实际的应⽤程序开发中,产⽣死循环的情况⽐较复杂,并不完全像本实例中的情况, 但归根结底都是由循环结束条件处理不当造成的,下⾯将对这些⽅法进⾏详细地分析。
三、总结
在循环程序中应避免出现死循环,即应保证循环变量的值在运⾏过程中可以得到修改,并使循环条件逐步变为假,从⽽结束循环。