#include<stdio.h>
int main(int argc, char *argv[]){
int i, x;
for(i = 1; i <= 10; i++){
x = i;
switch(x){
case 1:
x += 4;
case 4:
case 7:
x += 2;
break;
case 3:
case 9:
x += 3;
default:
x += 8;
}
printf("i=%2d. x= %2d\n", i, x);
}
}
输出
i= 1. x= 7
i= 2. x= 10
i= 3. x= 14
i= 4. x= 6
i= 5. x= 13
i= 6. x= 14
i= 7. x= 9
i= 8. x= 16
i= 9. x= 20
i=10. x= 18
解析
i = 1, x =5,没有break,继续往前执行, 直到遇到Break, 5+2= 7
i = 2, x = 10,走default statement
i = 3, case 3 , case 9 执行的都是同一条语句,x += 3; 所以x = 6,
同理没有break,继续+ 8, 最终x = 14
i = 4, case 4 , case 7 执行的都是同一条语句,x += 2, 输出6
以此类推
总结:
遇到break 就跳出循环,结束当前语句。
如果没有break,语句像if {}一样,花括号里面的都要执行。
找不到符合的case就执行default 语句。