可能重複:
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