电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
循环里Continue,Break,Return的作用,你知道吗?
分 享
扫描二维码分享
循环里Continue,Break,Return的作用,你知道吗?
C语言
李肖遥
关注
发布时间: 2020-11-11
丨
阅读: 1012
## 前言 循环里Continue,Break,Return经常会用到,也是很容易出错的一个坑,今天特地花个时间来总结下,在循环里使用Continue,Break,Return的不同效果是什么? ## Continue 语句 ## 涵义 C 语言中的 continue 语句有点像 break 语句,所不同的是,它不是强制终止,continue 会跳过当前循环中的代码,强迫开始下一次循环迭代。 对于 for 循环,continue 语句执行后,**自增语句仍然会执行**。 对于 while 和 do...while 循环,continue 语句**重新执行条件判断语句**。 ## 语法 ![](https://cf04.ickimg.com/bbsimages/202010/1d0e67dd35bf8d4425690a466f32c143.png) ## 流程图 ![](https://cf04.ickimg.com/bbsimages/202010/b5dbaa3ea882b3bb84b6441f193966fc.png) ## 实例 多层 for 循环实例如下: ``` #include
int main () { int i=0,j=0; for (i = 0; i < 4; i++ ) { printf("i 的值: %d\n",i); for (j = 0; j < 3; j++ ) { if( j==1){ continue; } printf("j 的值: %d\n",j); } } return 0; } ``` 编译结果如下,我们可以得出结论,在双层FOR循环中,在内循环使用Continue,只会**在内循环中跳过此处循环,小循环继续执行**,不会跳过大循环。 ![](https://cf04.ickimg.com/bbsimages/202010/6d0f56a74561d9f12017d160cb379433.png) 我们再举一个while循环的例子如下: ``` #include
int main () { int a = 0; do { if( a == 5) { /@@* 跳过迭代 */ a = a + 1; continue; } printf("a 的值: %d\n", a); a++; }while( a < 10 ); return 0; } ``` 输出如下: ![](https://cf04.ickimg.com/bbsimages/202010/ed90257d4b96327bcb666253005fb953.png) ## Break 语句 在循环中,关键词Break,作用是跳出循环,一般有以下两种用法: 1. 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。 2. 它可用于终止 switch 语句中的一个 case。 如果使用的是嵌套循环,break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。 **注意:** 1. break语句对if-else的条件语句不起作用。 2. 在多层循环中,一个break语句只向外跳一层。 3. 由于它是用来退出循环或者switch语句的, 所以只有当它出现在这些语句的时候, 这种形式的break语句才是合法的。 ## 语法 ![](https://cf04.ickimg.com/bbsimages/202010/589c130f1a2ec057bcd9b2cc77522399.png) ## 流程图 ![](https://cf04.ickimg.com/bbsimages/202010/e7c05f9ca97ec1024a419c8447386541.png) ## 实例 如下: ``` #include
int main () { int i=0,j=0; for (i = 0; i < 4; i++ ) { printf("i 的值: %d\n",i); for (j = 0; j < 3; j++ ) { if( j==1){ break; } printf("j 的值: %d\n",j); } printf("\n"); } return 0; } ``` 编译结果如下,我们可以看到在双层FOR循环中,在内循环使用Break,只会**在内循环中结束本次循环,小循环结束此次执行**,不会跳过大循环。 ![](https://cf04.ickimg.com/bbsimages/202010/43114f677fabf4cab308b5dd8c3dc0f9.png) 我们再举一个while循环的例子如下: ``` #include
int main () { int a = 0; do { printf("a 的值:%d\n" , a ); a = a + 1; if( a > 5) { // 终止循环 break; } }while( a < 10 ); return 0; } ``` 输出如下: ![](https://cf04.ickimg.com/bbsimages/202010/a9b2e32cbcc31c050a7d9547fbaf9286.png) ## Return 在循环中,Return语句,作用是结束本次循环,将函数调用栈弹栈,恢复现场。 说的简单点儿就是结束当前的函数,返回函数执行结果,回到本函数被调用处继续执行。 我们举个例子如下: ``` #include
int main () { int i=0,j=0; for (i = 0; i < 4; i++ ) { printf("i 的值: %d\n",i); for (j = 0; j < 3; j++ ) { if( j==1){ return; } printf("j 的值: %d\n",j); } } return 0; } ``` 输出如下: ![](https://cf04.ickimg.com/bbsimages/202010/8e667fb3af76d373a35512a02a32e3b3.png) ## 提问思考? 不知道大对上面的解释有没有理解清楚,这里提出3个问题,如果一看即知道答案,那么肯定没有问题了。 1. 同样是跳出循环,return和break有什么区别? 2. 同样是中断执行,return和return false有什么区别? 3. 在什么应用场景下我们会用到break或continue?
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
李肖遥
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交