無限迴圈

如果控制元件進入但從不離開迴圈體,則稱迴圈為無限迴圈。當迴圈的測試條件永遠不會評估為 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;
    }
}