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

第五十节: 循环体内的 continu e 和 break 语句。 【50.1 continue 语句。 】 通常情况下 , 单片 机在循环体 里从第一行的“入口条件” 开始 往下执行,直至碰到循环体 的边界 “底部 花括号” , 才又 折回到第一行 的“入口条件” 准备 进行新一轮的 循环。但是, 若中途碰 到 continue 语句, 就 会提 前结束 当前 这一 轮的 循环, 只要 碰到 co ntinue 语 句, 就立即 折回…

100%1 / 836
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:3
十六进制:3
二进制:11
2 个数
十进制:6
十六进制:6
二进制:110
3 个数
十进制:9
十六进制:9
二进制:1001
分析:
变量 a 3。a 0 始,循环 1,一共 3 次,因此等于 3。
变量 b 6。b 0 始,循环 2,一共 3 次,因此等于 6。
变量 c 9。c 0 始,循环 3,一共 3 次,因此等于 9。
【49.9 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改C 语言学习区域”代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口 51 习板,通过电脑端的串口助手软件就可以观
察到不同的变量数值,详细方法请看第十一节内容。
第五十节: 循环体内的 continue break 语句。
【50.1 continue 语句。
通常情况下单片机在循环体里从第一行的“入口条件”开始往下执行,直至碰到循环体的边界“底部
花括号”才又折回到第一行的“入口条件”准备进行新一轮的循环。但是,若中途碰 continue 语句,
会提前结束当前这一轮的循环,只要碰到 continue 句,就立即折回到第一行的“入口条件”准备进行新
一轮的循环。注意,continue 语句“结束”的对象仅仅是“当前这一轮的循环”,并没有真正结束这个循环
的生命周期。它好像拦路虎,遇到它,它说“你回去,第二天再来。”这台词里的“第二天再来”就强调这
个循环体的生命周期还没有真正结束。举一个具体的例子,如下:
while(…)或者 for(…) //循环体的条件判断入口处
{ //循环体开始
语句 1;
语句 2;
continue;
语句 3;
……
语句 N;
} //循环体结束
分析:上述语句中,单片机从“循环体的条件判断入口处开始往下执行,碰到 continue 马上折回
到“循环体的条件判断入口处”继续开始新一轮的循环,因此,这段代码,continue 后面的“语句 3”至
“语句 N”是永远也不会被执行到的。因为 continue 的拦截,上述语句等效于:
while(…)或者 for(…) //循环体的条件判断入口处
{ //循环体开始
语句 1;
语句 2;
} //循环体结束
问题来了,既然可以如此简化,还 continue 干什么,不是多此一举?在实际应用中,continue 肯定
不会像上面这样单独使用,continue 只有跟 if 语句结合,才有它存在的意义。例如:
while(…)或者 for(…) //循环体的条件判断入口处
{ //循环体开始
语句 1;
语句 2;
if(某条件)
{
continue
}
语句 3;
……
语句 N;
} //循环体结束
【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(…)
{