C语⾔中switchcase语句的嵌套给⼀个含有嵌套的switch case的⼀段完整代码:
#include <stdio.h>
int main()
{
int n=1;
int m=2;
switch(n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch(n)
{
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:switch的用法c语言
m++;
break;
default:
break;
}
printf("%d %d",m,n);
return 0;
}
代码看起来很简单,但是,如果不时很清楚的了解switch case⽤法的话,结果还是容易出错。
⾸先给出它的运⾏结果:m=5,n=3。当程序⾛到case 3 的时候,遇到了嵌套的switch case语句,此时
m=3,n=2。进⼊嵌套语句,和switch⾥⾯表达式匹配的是case 2,所以程序运⾏(m++;n++),此时,m=4,n=3。接着,后⾯遇到break,跳出switch case语句。但是,注意:break跳出的是嵌套的switch case语句,⽽外⾯的case 3后⾯并没有break语句。因此,出了case 3之后程序还需进⼊case 4,进⽽m⾃加,再遇到break语句,然后跳出整个switch case语句。所以。最终得到的m=5,n=3。
附上程序运⾏结果:
思考:看了这个代码我们⼜能发现什么,我们需要知道什么?
1.不是所有case语句最后都跟有break。我们起初见到的代码⾥,基本上每个case最后都跟有break,它是指当switch后⾯括号⾥的表达式与哪⼀个case后⾯的常亮表达式匹配时,直接进⼊这个case,执⾏完⾥⾯的语句后,遇到break,直接退出整个switch case语句。实际当中,我们还会碰到类似于上述代码的情况(不是所有case语句最后都跟有break),这个时候,程序总是从匹配的case执⾏,直到遇到break或者程序⾛到最后的default结束,退出switch case语句。
2.switch后⾯括号⾥的结果必须是×××值。因为这个值是要和case语句后⾯直接跟的常量表达式进⾏匹配的。
3.break在switch case语句中主要是将语句划分成不同的部分,⽅便匹配后跳出switch语句。
4.default的位置并不是固定的。为了使程序正常运⾏,它放在case之间的时候,后⾯必须跟上break语句;如果放在最后,可以跟break语句,也可以不跟。