2010-04-23 114 views
3

之後繼續在使用Java語言在switch語句中評估一個案例(以及其他語言)之後,除非使用了諸如break或return之類的控制語句,否則還會評估以下案例。爲什麼開關語句在案例

我明白這可能是一個實現細節,但是發生這種功能的原因是什麼?

謝謝!

+0

請參閱http://stackoverflow.com/questions/252489/why-was-the-switch-statement-designed-to-need-a-break關於適用於c的該主題的一些想法。之後,我認爲這是一個跟隨整個方式... – dmckee 2010-04-23 16:49:15

+0

是的它是一個重複的,我沒有搜索下的關鍵字貫穿或否則我會發現我的答案:/試圖刪除它,但有太多的答案 – 2010-04-23 17:30:37

回答

0

這是因爲案例標籤是goto目的地標籤。

1

因爲它對於從一種情況到另一種情況的「貫穿性」是有用的。如果你不需要(通常情況下),一個簡單的break可以防止這種情況發生。另一方面,如果案件沒有違約,就沒有任何簡單的方法可以做到這一點。

0

有些時候,您可能想讓多個case語句執行相同的代碼。 所以,你會在最後完成休息。

1

當硬件發生變化時,它爲我節省了大量重複代碼。

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); 
    } 
0

我傾向於類似於彙編編程想起來了,case的情況下,你跳進標籤,它貫穿在它下面的那些(計劃從上往下流),所以你會需要跳轉(break;)才能跳出。