【问题标题】:Why do switch statements continue after case [duplicate]为什么switch语句在case之后继续[重复]
【发布时间】:2010-04-23 16:46:53
【问题描述】:

在 Java(我相信其他语言)的 switch 语句中评估 case 之后,还会评估以下 case,除非使用了诸如 break 或 return 之类的控制语句。

我知道这可能是一个实现细节,但是发生此功能的原因是什么?

谢谢!

【问题讨论】:

  • 请参阅stackoverflow.com/questions/252489/…,了解有关此主题应用于 c。在那之后,我相信这是一个全程跟风的问题......
  • 是的,它是重复的,我没有在关键字fallthrough下搜索,否则我会找到我的答案:/试图删除它但答案太多

标签: java language-agnostic switch-statement


【解决方案1】:

因为从一个案例“失败”到另一个案例很有用。如果您不需要这个(通常情况下),一个简单的break 将阻止这种情况。另一方面,如果默认情况下 case 没有失败,那么就没有任何简单的方法可以做到这一点。

【讨论】:

    【解决方案2】:

    当硬件发生变化时,它为我节省了很多重复的代码。

    void measureCPD (void) {
    char setting;
      switch (DrawerType) {
        case 1:
          setting = SV1 | SV7;
          break;
    
        case 0:
        case 2:
          setting = SV1;
          break;
    
        case 5:
          PORTA |= SVx;
        case 3:
        case 4:
          setting = SV1 | SV7;
          break;
        default: // Illegal drawer type
          setting = SV1;
        }
      SetValves (setting);
      }
    

    【讨论】:

      【解决方案3】:

      这是因为案例标签是goto 目标标签。

      【讨论】:

        【解决方案4】:

        有时您可能希望多个 case 语句执行相同的代码。 所以你会跌倒并在最后休息。

        【讨论】:

          【解决方案5】:

          我倾向于将其与汇编编程类比,case 是您跳入的标签,它贯穿其下方的标签(程序从上到下流动),因此您需要一个跳 (break;) 出去。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-02-01
            • 1970-01-01
            • 2018-02-26
            • 2011-02-12
            • 1970-01-01
            • 2017-04-13
            相关资源
            最近更新 更多