#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循環。
