簡體   English   中英

當我們不在 switch 語句中使用 'break' 語句時,為什么在低於 'default' 的其他情況之前評估 'deafult'?

[英]When we don't use 'break' statement in switch statements,why is 'deafult' evaluated before other cases that is below 'default'?

昨天我看到了下面的代碼。 如您所見,它沒有任何break我預測它會打印“354”,因為我認為最終會評估default部分(在檢查所有情況之后。)

但這實際上並不正確,因為它打印了“345”。 有人可以解釋原因嗎?

int main ()
    {
        int a = 2;
        switch (2*a-1)
        {
            case 1:  printf ("1");
            case 2:  printf("2");
            case 3:  printf("3");
            default: printf("4");
            case 5:  printf("5");
        }
    }

由於2*a-1是 3,代碼跳轉到case 3標簽並從那里繼續運行。 其他標簽被忽略,因為沒有代碼跳到它們。 僅當switch中的值與任何case標簽都不匹配時才會跳轉到default標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM