[case
条语句不通过break
而“掉线”
case 7: result = 1; // <-- no break, so
default: result += 1; // <-- happens after case 7
这是documented行为
另一个关注点是
break
语句。每个break
语句终止封闭的switch
语句。控制流从switch
块之后的第一条语句继续。break
语句是必需的,因为没有它们,切换块fall through中的语句:匹配的case标签之后的所有语句将按顺序执行,而不管后续case标签的表达如何,直到遇到break语句为止] >
由于在每种情况下都没有break;
,因此您的case语句会失败并且无法退出循环。您的所有案例都将被应用,因此结果为result = 2
。
您必须在每个break
之后放置case
语句。因此,将结果值设为1的等效代码是: