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

语句 1; 语句 2; while(…) { 语句 3; break; 语句 4; } 语句 5; } 语句 6; 分析: 上述例子中 , 在 while 循环里面有 藏着第 二个 whil e 循环, 像这种循环之中 还有循 环的情况, 通 常称为循环 嵌套。单片机 从上往下执行 ,当遇 到 b reak 后, 它会跳到“语句 5 ”那里呢,还 是会跳到“ 语句 6”那里?正确 答案是“ 语句 5”那里,这说 明了 br eak 语句…

100%1 / 836
} //循环体结束
【50.2 break 语句。
continue 语句提前结束当前这一轮的循环,准备进入下一轮的新循环,强调“某次结束”,但不是真
束。break 语句是直接跳出当前循环体,是真正的结束当前循环体,强调循环体的“生命结束”。举例如下:
while(…)或者 for(…) //循环体的条件判断入口处
{ //循环体开始
语句 1;
语句 2;
break;
语句 3;
……
语句 N;
} //循环体结束
语句(N+1); //循环体之外语句
分析:上述语句中,单片机从“循环体的条件判断入口处”开始往下执行,突然碰到 break 语句,时,
立即无条件跳出当前循环体(无需判 while for 条件直接执行到循环体之外的“语句(N+1)”
break 后面的“语句 3”至“语 N”也没有被执行到。实际项目中,break 往往会配合 if 一起使用,
如:
while(…)或者 for(…) //循环体的条件判断入口处
{ //循环体开始
语句 1;
语句 2;
if(某条件)
{
break;
}
语句 3;
……
语句 N;
} //循环体结束
语句(N+1); //循环体之外语句
【50.3 break 语句能跳多远?】
break 语句能跳多远?预知答案请先看以下例子:
while(…)
{
语句 1;
语句 2;
while(…)
{
语句 3;
break;
语句 4;
}
语句 5;
}
语句 6;
分析:上述例子中 while 循环里面有藏着第二个 while 循环,像这种循环之中还有循环的情况,
常称为循环嵌套。单片机从上往下执行,当遇 break 后,它会跳到“语句 5”那里呢,还是会跳到“语句
6”那里?正确答案是“语句 5”那里,这说明了 break 语句的“有效射程”仅仅刚好能跳出当前的循环体
也就是说,在上述循环嵌套的例子中,最内层的 break 只能跳出最内层的循环体,不能跳到最外层的“语
6”那里,如果需要继续跳出最外层的“语句 6”那里,可以继续在外层的循环体内再增加一个 break 语句。
【50.4 还有哪些语句可以无条件跳出循环体?】
除了 break 以外,还有 return goto 语句可以跳出循环体。这部分的内容大家只需大概了解一下即可。
return 语句比 break 语句还厉害它不仅仅跳出当前循环体还是跳出了当前函数,也就是提前结束了当前
函数,这部分的内容后面章节会讲到,暂时不用管。而 goto 语句在 C 语言中大家都公认不建议用,因为它
很容易扰乱大家常用的 C 语言编程结构,我本人也从来没有用过 goto 语句,因此不再深入讲解它。
【50.5 例程练习和分析。
编写一个程序来熟悉一下 continue break 语句的使用。
程序代码如下:
/*---C 语言学习区域的开始。-----------------------------------------------*/
unsigned char a=0; //观察这个数最后的变化
unsigned char b=0; //观察这个数最后的变化
unsigned char c=0; //观察这个数最后的变化
unsigned char d=0; //观察这个数最后的变化
unsigned char i; //控制循环体的条件判断变量
void main() //主函数
{
//i<6 的条件判断是在进入循环体之前判断,而 i 的自 1 是在执行完一次循环体之后才自加的。
for(i=0;i<6;i++)
{
a=a+1; //被执行了 6 次,分别是第 0,1,2,3,4,5
if(i>=3) //当 i 等于 3 的时候,开始“拦截”continue 后面的代码。
{
continue; //提前结束本次循环,准备进入下一次循环
}
b=b+1; //被执行了 3 次,分别是 0,1,2
}
//i<6 的条件判断是在进入循环体之前判断,而 i 的自 1 是在执行完一次循环体之后才自加的。
for(i=0;i<6;i++)
{
c=c+1; //被执行了 4 次,分别是第 0,1,2,3
if(i>=3) //当 i 等于 3 的时候,直接跳出当前循环体,结束此循环体的“生命周期
{
break; //马上跳出当前循环体
}
d=d+1; //被执行了 3 次,分别是第 0,1,2
}
View(a); //把第 1 个数 a 发送到电脑端的串口助手软件上观察。
View(b); //把第 2 个数 b 发送到电脑端的串口助手软件上观察。
View(c); //把第 3 个数 c 发送到电脑端的串口助手软件上观察。
View(d); //把第 4 个数 d 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:6
十六进制:6
二进制:110
2 个数
十进制:3
十六进制:3
二进制:11
3 个数