今天在看代碼的時候發現了一個類似如下的結構:
switch(error)
{
case ENUM_0:
case ENUM_1:
printf("case 0 and 1\n");
case ENUM_2:
printf("case 2\n");
break;
}
就有點疑惑,若 error 取值為 ENUM_0 或 ENUM_1 時,printf("case 0 and 1\n"); 這句肯定是執行了的。但不確定會不會走到下面的 case 裡面去?
後面為了驗證這個小問題,在VC裡面編了個例子試了一把,證實確實執行到了 case 2 的分支裡面去了。並且執行到 break 時才跳出。
[cpp]
#include <stdio.h>
int main(void)
{
char ch = 0;
switch(ch)
{
case 0:
case 1:
printf("case 0 excute\n");
case 2:
printf("case 2 excute\n");
break;
}
return 0;
}
總結,case 分支下面的語句會一直執行到 break 或 return 時跳出。