從 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中文網其他相關文章!