首頁  >  文章  >  後端開發  >  如何從 C 中的 Switch 語句中退出循環:使用 `goto` 或標誌?

如何從 C 中的 Switch 語句中退出循環:使用 `goto` 或標誌?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-27 02:41:30691瀏覽

How to Exit a Loop from Within a Switch Statement in C  : Using `goto` or a Flag?

從 Switch 內退出循環的替代方法

在某些情況下,可能需要從內部終止封閉循環switch 語句。雖然使用標誌是常見的方法,但 C 提供了一種替代解決方案:使用 goto 語句。

困境:

考慮以下程式碼片段:

<code class="cpp">while(true) {
    switch(msg->state) {
    case MSGTYPE: // ...
        break;
    // ... more stuff ...
    case DONE:
        // **HERE, I want to break out of the loop itself**
    }
}</code>

目標是當 msg->state 等於 DONE 時立即退出循環。

使用 goto:

C 允許使用goto 語句明確跳到程式碼中的特定位置。可以利用它來實現所需的行為:

<code class="cpp">while ( ... ) {
    switch( ... ) {
     case ...:
         goto exit_loop;  // Jump to this location when msg->state is DONE

   }
}

exit_loop: ;  // Label for jump target</code>

在此修改後的程式碼中,當 msg->state 等於 DONE 時,goto 語句將執行流定向到 exit_loop 標籤。因此,這會退出 switch 和封閉循環。

注意: 使用標籤 (:) 來識別 goto 語句的目標非常重要。不加區別地使用 goto 可能會導致義大利麵條式程式碼和可維護性問題。

以上是如何從 C 中的 Switch 語句中退出循環:使用 `goto` 或標誌?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn