【问题标题】:break out of switch case脱离开关盒
【发布时间】:2014-08-07 18:21:32
【问题描述】:

想知道如果 break 是在 if 语句中,我是否可以打破我的情况,或者如果 break 只会退出 if 而不是 case。如果 else 被执行,我只想进入下一个案例。谢谢

  case PS_STARTED:
     readyForPwrDn_b = appReadyForPwrDn_b;

     if (!readyForPwrDn_b)
     {
        break;
     }
     else
     {
        CurrentPowerState_e = PS_COMPLETE;
     }
     //fallthrough

  case PS_COMPLETE:

【问题讨论】:

  • 什么编程语言?

标签: switch-statement break


【解决方案1】:

没有突破if 这样的事情。 break 仅适用于 switch 和我熟悉的所有编程语言中的循环。

PHP:

break 结束当前 forforeachwhiledo-while 或 switch 结构。

Javascript:

break 语句 终止当前循环、switch 或标签语句,并将程序控制转移到终止语句之后的语句。

C++:

break 语句与条件 switch 语句以及 doforwhile 一起使用循环语句。

但是,这些都适用于未标记的 break 语句。您可以使用某些语言编写:

myIf: 
    if (!readyForPwrDn_b) {
        break myIf;
    } else {
        CurrentPowerState_e = PS_COMPLETE;
    }

这只会打破if

【讨论】:

  • 我知道您可以测试 if 语句以使用 break 打破循环,但我相信您在这里是正确的。我认为他会使用 continue 或 return 他不会吗?
  • 我很确定你可以 break 标记块语句(Java 特定,不确定其他语言)
  • @WhyCry continue 只能在循环中使用。它将进入循环的顶部,而不仅仅是退出switch
  • @VinceEmigh 我能找到的所有标记为break 语句的示例都有标识循环的标签,它通常用于从嵌套循环中退出外循环。也可以用来退出非循环语句吗?
  • @Barmar social.msdn.microsoft.com/Forums/vstudio/en-US/… 我在这里阅读,这就是为什么我有了 goto 的想法。
【解决方案2】:
if (condition)
{
    //Do your thing

    if (breakOutCondition)
        return;

    //Continue your code
}

这个 if 语句可以工作,但是有一种简单、干净的方法可以摆脱这样的循环。你可以使用goto 来打破这个变量范围,它会让它循环变得非常干净。警告:goto 有时很可怕,因为它本质上是伪装的休息。

if (breakoutcondition)
{
    ...
    goto foo;
    ...
}
foo:
//Continue here

【讨论】:

  • 如果break 能满足您的需求,就没有理由求助于goto
  • Break 将打破整个 switch 结构。他的问题在他正在寻找的东西中没有得到很好的解释。他是想继续到 else,还是完全打破这个开关?
  • 他还没有给出语言。如果是 Javascript,goto 将不起作用,因为它没有该语句。
  • 哇,我读错了。恐怕太快了。这样就可以按他的意愿破案了。
猜你喜欢
  • 2010-11-22
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多