为什么我们需要在案例陈述后中断?

为什么编译器不自动在交换机中的每个代码块之后放置中断语句?是出于历史原因吗?您希望何时执行多个代码块?


答案 1

有时,将多个事例与同一代码块相关联会很有帮助,例如

case 'A':
case 'B':
case 'C':
    doSomething();
    break;

case 'D':
case 'E':
    doSomethingElse();
    break;

等。举个例子。

根据我的经验,通常“失败”并在一种情况下执行多个代码块是不好的风格,但在某些情况下可能会有用处。


答案 2

从历史上看,这是因为 本质上定义了一个 ,也称为呼叫的目标。switch 语句及其关联情况实际上只是表示一个多路分支,具有多个潜在的代码流入口点。caselabelgoto

总而言之,人们已经注意到几乎无限次,这几乎总是您希望在每种情况下结束时都有的默认行为。break