TA的每日心情 | 怒 2014-12-12 07:01 |
---|
签到天数: 8 天 [LV.3]偶尔看看II
逆向联盟VIP会员
   
- 积分
- 344
|
本帖最后由 夺命书生 于 2014-11-10 12:40 编辑
死循环是指程序无法退出或者无法进入下一次循环。
那么,什么情况下会产生死循环呢?
C语言中常用的有3中循环语句,这些循环语句都各有特点,while 和 do...while ,经常用在循环次数不确定的场合,
for 经常被用来遍历数值和集合,在使用这些循环语句过程中,若其循环结束条件处理不妥当,则很可能产生死循环。
看下面一个例子:
- #include<stdio.h>
- void main()
- {
- unsigned int i;
- for(i=10;i>=0;i--)
- {
- printf("%d",i);
- }
- printf("\n");
- }
复制代码
程序本意是将每次得到计数变量的输出来,结果由于疏忽导致程序死循环,程序运行结果如下图:
问题分析与解决方法:
for循环的结束条件是,当条件表达式的值为 false ,上面实例中的计数变量被定义为, unsigned 类型。
这样 >=0 就永远成立,所以程序就陷入了死循环。
下面两种是常用的循环语句的判断条件。
1.while 语句的循环结束条件是,当布尔表达式的值为 false 时。
2.do... while 语句的循环结束条件是,当布尔表达式的值为 false 时。
- 注意:
- 使用 do...while 要注意循环次数的判断,
- 因为 do...while 是先执行循环体后再判断
复制代码 解决本例的方法就是将计数变量定义为 int 型,就不会陷入死循环了,程序正常运行结果如图:
在实际的应用开发中,产生死循环的情况比较复杂,并不像本例中的情况,
但归根结底都是由循环结束条件处理不当造成的。
|
|