网站首页 > 基础教程 正文
前言
循环里Continue,Break,Return经常会用到,也是很容易出错的一个坑,今天特地花个时间来总结下,在循环里使用Continue,Break,Return的不同效果是什么?
Continue 语句
涵义
C 语言中的 continue 语句有点像 break 语句,所不同的是,它不是强制终止,continue 会跳过当前循环中的代码,强迫开始下一次循环迭代。
对于 for 循环,continue 语句执行后,自增语句仍然会执行。
对于 while 和 do…while 循环,continue 语句重新执行条件判断语句。
语法
流程图
实例
多层 for 循环实例如下:
#include <stdio.h>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,只会在内循环中跳过此处循环,小循环继续执行,不会跳过大循环。
我们再举一个while循环的例子如下:
#include <stdio.h>int main (){ int a = 0; do { if( a == 5) { /@@* 跳过迭代 */ a = a + 1; continue; } printf("a 的值: %d\n", a); a++; }while( a < 10 ); return 0;}
输出如下:
Break 语句
在循环中,关键词Break,作用是跳出循环,一般有以下两种用法:
- 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
- 它可用于终止 switch 语句中的一个 case。
如果使用的是嵌套循环,break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
注意:
- break语句对if-else的条件语句不起作用。
- 在多层循环中,一个break语句只向外跳一层。
- 由于它是用来退出循环或者switch语句的, 所以只有当它出现在这些语句的时候, 这种形式的break语句才是合法的。
语法
流程图
实例
如下:
#include <stdio.h>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,只会在内循环中结束本次循环,小循环结束此次执行,不会跳过大循环。
我们再举一个while循环的例子如下:
#include <stdio.h>int main (){ int a = 0; do { printf("a 的值:%d\n" , a ); a = a + 1; if( a > 5) { // 终止循环 break; } }while( a < 10 ); return 0;}
输出如下:
Return
在循环中,Return语句,作用是结束本次循环,将函数调用栈弹栈,恢复现场。
说的简单点儿就是结束当前的函数,返回函数执行结果,回到本函数被调用处继续执行。
我们举个例子如下:
#include <stdio.h>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;}
输出如下:
提问思考?
不知道大对上面的解释有没有理解清楚,这里提出3个问题,如果一看即知道答案,那么肯定没有问题了。
- 同样是跳出循环,return和break有什么区别?
- 同样是中断执行,return和return false有什么区别?
- 在什么应用场景下我们会用到break或continue?
猜你喜欢
- 2024-12-26 C#如何获取计算机或硬件信息 c#获取其他程序界面内容
- 2024-12-26 C#中把PDF导出为图片的方法分享 c# 生成 pdf
- 2024-12-26 C# 操作Excel文件之NPOI (一) c#操作excel文件读写
- 2024-12-26 解释C#中的任务并?库(TPL)及其?途
- 2024-12-26 解释 C# 中的任务并?库是如何?作的
- 2024-12-26 NPOI在C#中的用法 c++ npoi
- 2024-12-26 C#程序员参考手册 高清版 c#程序设计实用教程
- 2024-12-26 C#远程唤醒指定客户端代码 c#远程通讯
- 2024-12-26 一起来看看C#的圈复杂度 c# :?
- 2024-12-26 TCP网络编程中connect()、listen()和accept()三者之间的关系
- 05-24php实现三方支付的方法有哪些?
- 05-24CosmicSting 漏洞影响 75% 的 Adobe Commerce 和 Magento 网站
- 05-24Java接口默认方法的奇妙用途
- 05-24抽象类和接口
- 05-24详解Java抽象类和接口
- 05-24拒绝接口裸奔!开放API接口签名验证
- 05-24每天学Java!Java中的接口有什么作用
- 05-24Java:在Java中使用私有接口方法
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)