C/C 中的無限循環檢測
在C/C 中,通常使用以下三種構造之一來建立無限循環:
- for(;;) {}
- while(1) {} / while(true) {}
- do {} while(1) / do {} while(true)
這些形式的選擇主要取決於偏好問題,客觀上沒有一個是優越的。
語法和語法上的差異行為
-
for(;;) {}: 標準C 語法,可以追溯到Kernighan和Ritchie 的開創性工作。它被認為是歷史性的,但仍然被廣泛接受。
-
while(1) {}:在行為上相當於 for(;;) {} 並被廣泛使用。現代編譯器會針對恆定條件發出編譯器警告,這可能是缺點。
-
while(true) {}: while(1) {} 的更具可讀性的替代方案,但依賴bool 類型,可能需要包含頭檔。
現代編譯器行為
現代編譯器通常將所有三種形式視為相同,從而產生相同的機器碼。他們認識到這些循環旨在是無限的,並且不執行顯式條件檢查,從而相應地優化程式碼。
個人偏好
選擇使用哪種形式最終是個人的,並受到以下因素的影響:
-
可讀性:有些程式設計師喜歡while(true) {},因為其明顯的清晰度。
-
編譯者警告: while(1) {} 和while(true) {} 可能會因條件恆定而觸發警告訊息.
-
歷史遺產: for(;;) {}由於與早期發展的關聯而仍然很受歡迎C.
最終,無限循環的最佳形式是符合程式設計師的偏好和風格,同時尊重可能存在的任何程式碼約定或指南的形式。
以上是C/C 中的無限循環:哪一種形式最好?的詳細內容。更多資訊請關注PHP中文網其他相關文章!