3

可能重复:
为什么 switch 语句被设计为需要中断?

最流行的语言 [c, c++, java] 的一个有趣现象是 switch 默认是失败的。

我很好奇原因,有人知道这个故事吗?

4

1 回答 1

1

在 C 中,这样做的原因是为了将switch易于优化的跳转表制作成一个跳转表,基本上,应用程序将根据表达式计算跳转距离,跳转到某个点,并从该点继续执行。

但是,我认为这种行为有时很有用,因为它有助于避免在 multiply cases 中重复代码,毕竟break在需要时放置 s 并不难。

Wiki有一个不错的示例来说明如何使用跌倒:

switch (n) {
  case 0:
    printf("You typed zero.");
    break;
  case 4:
    printf("n is an even number.");
  case 1:
  case 9:
    printf("n is a perfect square.");
    break;  
  case 2:
    printf("n is an even number.");
  case 3:
  case 5:
  case 7:
    printf("n is a prime number.");
    break;
  case 6:
  case 8:
    printf("n is an even number.");
    break;
  default:
    printf("Only single-digit numbers are allowed.");
}
于 2012-09-11T07:53:39.767 回答