switch的形式
switch(表达式)
{
case常量表达式1:语句1;
case常量表达式2:语句2;
case常量表达式3:语句3;
......
case常量表达式n:语句n;
default: 语句n+1;
}
执行过程:①首先计算“表达式”的值 ②比较表达式1的值与常量表达式的值,从常量表达式1开始,若常量表达式1与表达式的值相同,则执行后面的语句1,并顺序执行语句2、语句3......语句n,不管后面的case后的常量表达式是否匹配成功。③如果第一个case不匹配,则跳过冒号后的语句1,继续与case2、case3......case n 相比,找到一个匹配的case,开始执行其冒号后面的语句。④如果一直到case n 还没有找到与表达式相等的值,则执行default后面的语句n+1
注:当与某个常量表达式配对之后,会执行该分支以及后面的所有的语句,除非遇到break语句
switch语句的嵌套
在一个switch语句内使用另一个switch语句,即使内部和外部的switch的case常量包含共同的值,也没有矛盾
例题 程序的运行结果是()
#include<stdio.h>
void main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;
}
printf("a=%d,b=%d",a,b);
}
本题考查switch的嵌套和break语句的使用,根据switch的表达式找到与之匹配的case语句,从此case语句执行下去,不再进行判断直到遇到break语句或函数结束为止。内层的switch (y)只执行了a++,此时a的值为1,然后跳出内层执行外层的case 2 语句的a++;b++;a为2,b为1.
运行结果为 a=2,b=1
版权归原作者 阖眸剑客 所有, 如有侵权,请联系我们删除。