首页  >  文章  >  后端开发  >  如何从 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