矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 4618|回复: 8

这个单片机的 break 语句,有些迷糊

[复制链接]
     
发表于 2018-3-12 17:31:52 | 显示全部楼层 |阅读模式
如图,if条件为真的时候,执行下面的语句break,这个很明了。
但是为什么break不是跳出 if 语句,而是直接跳出更大范围的do while循环了呢?
不解,老师指导下。
xxxxxxxxxxxxxxxxxxxxxxxxx.jpg
     
发表于 2018-3-12 17:41:24 | 显示全部楼层
break 循环 循环 循环

if 不是循环

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-3-12 18:27:16 | 显示全部楼层
老笨猪 发表于 2018-3-12 17:41
break 循环 循环 循环

if 不是循环

但是我发现那个switch case语句也有在case的后面加上一个break用来跳出switch case语句,这就奇怪了,switch case 语句不是类似 while那样的循环语句啊,怎么也能被打断跳出。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-3-12 18:48:40 | 显示全部楼层
简燕 发表于 2018-3-12 18:42
2楼是正解.

break 是跳出最内层的循环.

switch case 也是循环语句吗?这个还真不知道,结合如下程序演示。


switch(5)
case(2):i++;
case(3):n++

如果switch case真是循环语句的话,那如果程序执行到这一层,岂不是会因为5不等于2也不等于3,而一直在这个switch case语句里面死循环吗?
回复 支持 反对

使用道具 举报

     
发表于 2018-3-12 19:06:06 | 显示全部楼层
本帖最后由 壹法拉 于 2018-3-12 19:10 编辑

break 是跳出离它最近那层循环;if 不是循环
回复 支持 反对

使用道具 举报

     
发表于 2018-3-12 19:31:33 | 显示全部楼层
……还是找本C语言的书看看吧。基本的语法还是有必要先熟悉的
回复 支持 反对

使用道具 举报

     
发表于 2018-3-13 14:36:06 | 显示全部楼层
多看,少说,这里高手挺多的,我学习了。
回复 支持 反对

使用道具 举报

     
发表于 2018-3-15 14:52:24 | 显示全部楼层
break 就是针对循环语句的。你这个应该是i2c,写检查ack部分
回复 支持 反对

使用道具 举报

发表于 2018-3-16 15:37:07 | 显示全部楼层
break跳出循环,if不是循环,所以不是针对if,一旦break以后,do..while后半段就不执行了。
switch case
例如:
x = 5;
y = 1;
switch(x)
{
  case 5: y++;
  case 4: y++;
  case 3: y++;
}

x = 5;
y = 1;
switch(x)
{
  case 5: y++;break;
  case 4: y++;break;
  case 3: y++;break;
}
两段是不同的,前一段代码会从case 5:一直执行下去,包含case 4,case3;
后段代码执行完case 5 就break掉,后面case 4,3是不执行的。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-30 07:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表