无限循环

如果控件进入但从不离开循环体,则称循环为无限循环。当循环的测试条件永远不会评估为 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;
    }
}