为什么switch语句会在case之后继续

时间:2010-04-23 16:46:53

标签: java language-agnostic switch-statement

在使用Java中的switch语句中评估一个案例(我确定其他语言)之后,除非使用像break或return这样的控制语句,否则还会评估以下案例。

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

谢谢!

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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);
  }

答案 2 :(得分:0)

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

答案 3 :(得分:0)

有时您可能希望多个case语句执行相同的代码。 所以你会堕落并在结束时休息。

答案 4 :(得分:0)

我倾向于认为它与汇编编程类似,case是你跳进去的标签,它贯穿于它下面的标签(程序从上到下流动),所以你会需要跳转(break;)才能离开。