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

if(0==变量) { 语句 0; } else if(1= =变量) { 语句 1; } else if(2= =变量) { 语句 2; } else //相当于 switc h 中的 defau lt { 语句 3; } 【52.6 switch 中内嵌 s witch。 】 if 语句可以内 嵌 if 语句, while 语句也可以 内嵌 whil e 语句, s witch 语句当然也 可以内 嵌 swit ch。 比 如: s…

100%1 / 836
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 的练习程序。
程序代码如下:
/*---C 语言学习区域的开始。-----------------------------------------------*/
unsigned char k; //switch 的入口变量
unsigned char a; //观察此变量的变化来理解 switch 的执行顺序
void main() //主函数
{
a=0;
k=2; //入口变量等 2
switch(k)
{
case 0: //入口 0
a++;
break; //跳出 switch
case 1: //入口 1
a++;
case 2: //入口 2,上述 k 等于 2 所以从这里进来
a++;
case 3: //入口 3
a++;
case 4: //入口 4
a++;
break; //跳出 switch
case 5: //入口 5
a++;
break; //跳出 switch
default: //当前面没有遇到匹配的 case 入口时,就从 default 入口进来
a++;
break; //跳出 switch
} //最后一个 switch 的花括号也是跳出 switch
View(a); //把第 1 个数 a 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:3