1 switch(表达式)
2 {
3 case 常量表达式1: 语句1; break;
4 case 常量表达式2: 语句2; break;
5 ……
6 case 常量表达式n: 语句n; break;
7 default: 语句n+1; break;
8 }
9
10 //计算表达式的值,并逐个与其后的常量表达式值相比较;
11 //当表达式的值与某个常量表达式的值相等时,则继续执行该case后的语句;
12 //若表达式的值与所有case后的常量表达式均不相同,则执行default后的语句
1 #include <stdio.h>
2 int main()
3 {
4 int c = 0, k;
5 for( k=1; k<3; ++k)
6 {
7 switch (k)
8 {
9 default:
10 c+=k;//default之后没有break,故不会跳出去
11 case 2:
12 c++;//会执行case2,此时c=2
13 break;//再进来还是执行c++,最终c=3
14 case 4:
15 c+=2;
16 break;
17 }
18 }
19 printf("%d",c);
20 return 0;
21 }
如果
default语句在所有case之后,此时可以不加break;如果
default语句之后还有case语句,不加break会导致default语句执行过后继续下面的case语句,故此时必须加break;不过通常
default写在最后;
关于return 0
1 #include <stdio.h>
2 int main()
3 {
4 int val1,val2;
5 char op;
6 int res=0;
7 scanf("%d",&val1);
8 while((op=getchar())!='=')
9 {
10 scanf("%d",&val2);
11 if(val2==0 && op=='/')
12 {
13 printf("ERROR\n");
14 return 0;//刚开始没有写return 0,分母为0报错,发现最终会打印val1的值
15 }else
16 {
17 switch(op)
18 {
19 case '+': res=val1+val2; break;
20 case '-': res=val1-val2; break;
21 case '*': res=val1*val2; break;
22 case '/': res=val1/val2; break;
23 default : puts("ERROR\n");return 0; break;
24 //这个没有return 0会报非法字符的错,原因同上
25 }
26 }
27 val1=res;
28 }
29 printf("%d\n", val1);
30 return 0;
31 }
来源:https://www.cnblogs.com/luuuw/p/12249092.html