#include <stdio.h> int main() { int k; char c; for(k=1,c='A'; c < 'F'; k++) { switch(++c) { case'A': k++; printf("%c %d\n",c,k);break; case'B': k *= 2; printf("%c %d\n",c,k);break; //跳出switch()執行其后的語句 case'C': k--; printf("%c %d\n",c,k); //不論條件為何值,繼續執行下一條case判斷(case'D':)后面的語句 case'D': k %= 3; printf("%c %d\n",c,k);continue; //不執行switch塊后面的語句,跳出“本次”循環直接到外層循環 case'E': k /= 2; printf("%c %d\n",c,k); case'F': k++; printf("%c %d\n",c,k); default: k += 2; printf("%c %d\n",c,k); //所有條件不符合,執行default后面的語句 } k++; printf("*********************\n"); } printf("%d\n", k); return 0; }
詳見注釋
1. 在switch語句中,“case 常量表達式”只相當於一個語句標號, 表達式的值和某標號相等則轉向該標號執行,但不能在執行完該標號的語句后自動跳出整個switch 語句,所以會出現繼續執行所有后面case語句的情況。
2. 如果你在switch中使用continue,continue生效是對於while循環
如果你在switch中使用break,break生效是對於switch。
3. 如果在switch外使用continue和break,生效都是對於while循環。