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