从单片机基础到程序框架(全集 2019pdf版).pdf - 第221页

case 1: 语句 1; break; } 第二种: case 的数字不连 贯(这种格式 也是合法 的): switch(变量 ) { case 0: 语句 0; break; case 3: 语句 3; break; case 9: 语句 9; break; } 【52.5 switch 的 d efault。 】 default 是 入 口 语 句 , 它 在 sw itch 语 句 中 也 不 是 必 须 的 , 应 根 据 程…

100%1 / 836
【52.3 switch break。
刚才的例子中,可以看到三个关字:switch,case,break。其实并不是每个 case 必须要跟 break
套,break 只是起到一个出口的功能。假如没有遇 break,程序会一直往下执行,直到遇到 break 或者 switch
“最下面的花括号”为止。比如:
switch(变量) //根据变量的数值大小从对应的 case 入口进
{
case 0: //入口 0
语句 0;
break;
case 1: //入口 1
语句 1;
case 2: //入口 2
语句 2;
break;
case 3: //入口 3
语句 3;
break;
} //最下面的花括号也是一个 switch 程序体的出口之一
分析:假如此时 switch(变量)的变量等于 1,单片机经过查询后,就从匹配的 case 1 口进来,执
“语句 1”后,居然没有遇 break 语句,于是紧接着碰到“case 2”入口的语句,现在问题来了,单片
此时是退出 switch 程序体还是忽略case 2”入口语句而继续执行后面的“语句 2”?答案是:忽略“case
2”入口语句而继续执行后面的“语句 2”。这里有点像坐地铁,你只关注一个入口和一个出口,进入地铁内
之后,你中途再遇到无数个入口都可以忽略而继续前进,直到你到达目的地的出口才结束整个乘车过程。
续刚才的分析,单片机执行“语句 2”之后,紧接着遇到 break 语句,这时才跳出整个 switch 程序体。回顾
一下整个流程,本例子中 case 1 没有 break 语句,就继续往下执行下面 case2 里面的语句,直到遇到 break
或者“最下面的花括号”为止
【52.4 case 的变量有顺序要求吗?】
switch 语句内部的 case 有规定顺序吗?必须连贯吗?switch 程序体内部可以写很多 case 入口,这
case 入口是不是必须按从小到大的顺序?是不是规定必须 case 数字连贯?答案是:没有规定顺序,也没
规定 case 数字连贯。case 的数值只是代表入口,比如以下两种写法都是合法的
第一种:case 不按从小到大的顺序(这种格式是合法的):
switch(变量)
{
case 2:
语句 2;
break;
case 0:
语句 0;
break;
case 1:
语句 1;
break;
}
第二种:case 的数字不连贯(这种格式也是合法的):
switch(变量)
{
case 0:
语句 0;
break;
case 3:
语句 3;
break;
case 9:
语句 9;
break;
}
【52.5 switch default。
default switch default
“if-else if-else ”组合语句中 else,也就是当 switch 入口变量没有匹配的 case 入口时,就会默认
进入 default 入口,就像“if-else if-else ”语句中当前面所有的条件不满足时,就进入 else 句的
序体,比如
switch(变量) //根据变量的数值大小从对应的 case 入口进来
{
case 0: //入口 0
语句 0;
break; //switch 程序体的出口之一
case 1: //入口 1
语句 1;
break; //switch 程序体的出口之一
case 2: //入口 2
语句 2;
break; //switch 程序体的出口之一
default: //当所有的 case 不满足,就 default 的入口进来
语句 3;
break;
} //最下面的花括号也是一个 switch 程序体的出口之一
分析:假 switch 的入口变量等于 35,单片机从上往下查询,因为没有找到 case 35,所以就会从默
认的 default 入口进来 3,然后遇 break 才跳 switch 体。程序能如
“if-else if-else”组合语句来实现等效于如下:
if(0==变量)
{
语句 0;
}
else if(1==变量)
{
语句 1;
}
else if(2==变量)
{
语句 2;
}
else //相当于 switch 中的 default
{
语句 3;
}
【52.6 switch 中内嵌 switch。
if 语句可以内 if 语句,while 语句也可以内嵌 while 语句,switch 语句当然也可以内 switch。
如:
switch(a)
{
case 1:
switch(b) //内嵌 switch
{
case 1:
Break;
case 2:
Break;
}
Break;
case 2:
Break;
}
分析:上述这种 switch 内嵌 switch 语句也是合法的,而且在实际项目中也很常用,大家目前先有个
概的了解即可,暂时不深入讲解。
【52.7 例程练习和分析。
现在编写一 switch 的练习程序。
程序代码如下: