无限循环
如果控件进入但从不离开循环体,则称循环为无限循环。当循环的测试条件永远不会评估为 false
时会发生这种情况。
例:
Version >= C99
for (int i = 0; i >= 0; )
{
/* body of the loop where i is not changed*/
}
在上面的例子中,变量 i
(迭代器)被初始化为 0.测试条件最初是 true
。但是,i
不会在正文中的任何位置进行修改,并且更新表达式为空。因此,i
将保持为 0,并且测试条件将永远不会评估为 false
,从而导致无限循环。
假设没有跳转语句, 可能形成无限循环的另一种方法是明确地保持条件为真:
while (true)
{
/* body of the loop */
}
在 for
循环中,条件语句是可选的。在这种情况下,条件总是真空,导致无限循环。
for (;;)
{
/* body of the loop */
}
但是,在某些情况下,可能故意保留条件,目的是使用诸如 break
之类的跳转语句退出循环。
while (true)
{
/* statements */
if (condition)
{
/* more statements */
break;
}
}