之後繼續在使用Java語言在switch語句中評估一個案例(以及其他語言)之後,除非使用了諸如break或return之類的控制語句,否則還會評估以下案例。爲什麼開關語句在案例
我明白這可能是一個實現細節,但是發生這種功能的原因是什麼?
謝謝!
之後繼續在使用Java語言在switch語句中評估一個案例(以及其他語言)之後,除非使用了諸如break或return之類的控制語句,否則還會評估以下案例。爲什麼開關語句在案例
我明白這可能是一個實現細節,但是發生這種功能的原因是什麼?
謝謝!
這是因爲案例標籤是goto
目的地標籤。
因爲它對於從一種情況到另一種情況的「貫穿性」是有用的。如果你不需要(通常情況下),一個簡單的break
可以防止這種情況發生。另一方面,如果案件沒有違約,就沒有任何簡單的方法可以做到這一點。
有些時候,您可能想讓多個case語句執行相同的代碼。 所以,你會在最後完成休息。
當硬件發生變化時,它爲我節省了大量重複代碼。
void measureCPD (void) {
char setting;
switch (DrawerType) {
case 1:
setting = SV1 | SV7;
break;
case 0:
case 2:
setting = SV1;
break;
case 5:
PORTA |= SVx;
case 3:
case 4:
setting = SV1 | SV7;
break;
default: // Illegal drawer type
setting = SV1;
}
SetValves (setting);
}
我傾向於類似於彙編編程想起來了,case
的情況下,你跳進標籤,它貫穿在它下面的那些(計劃從上往下流),所以你會需要跳轉(break;
)才能跳出。
請參閱http://stackoverflow.com/questions/252489/why-was-the-switch-statement-designed-to-need-a-break關於適用於c的該主題的一些想法。之後,我認爲這是一個跟隨整個方式... – dmckee 2010-04-23 16:49:15
是的它是一個重複的,我沒有搜索下的關鍵字貫穿或否則我會發現我的答案:/試圖刪除它,但有太多的答案 – 2010-04-23 17:30:37