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