[英]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.