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