可能重复:
Why was the switch statement designed to need a break?为什么默认情况下转换语句转入?
最流行的语言并[c,C++,JAVA]的有趣的现象是通过默认该开关是落空。
我很好奇理性,有人知道这个故事吗?
可能重复:
Why was the switch statement designed to need a break?为什么默认情况下转换语句转入?
最流行的语言并[c,C++,JAVA]的有趣的现象是通过默认该开关是落空。
我很好奇理性,有人知道这个故事吗?
在C中,原因是为了使switch
可以轻易地被优化成一个跳转表。基本上,根据表达式,应用程序将计算跳转距离,跳转到某个点,然后继续执行点。
但是,我认为这种行为有时是有用的,因为它有助于避免代码重复乘以case
s,并且毕竟在需要时并不难于放置break
。
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.");
}
另一种设计*可能已经打破默认设置,并且需要明确的穿透。这会让很多人忘记休息时间。 –
@Bo,是的,但是如果他们使用了,说'继续'来强迫失败,那就会有点含糊。像“它会继续吗?它会继续处理这些案例,还是会在'switch'之后继续执行?”虽然我同意它现在的工作方式也不是很直观。 – SingerOfTheFall
它不是在C#。 –
我不知道历史,但如果不是这样,那么switch块和if-elseif块之间就不会有区别。 – Augusto
以后,请在询问多次提问之前使用搜索功能。 – verdesmarald