当前位置: 首页 > news >正文

while循环与中断语句break、continue、return以及goto的使用

原创:https://blog.csdn.net/liebecl/article/details/76167106

由于程序的复杂性需要 我们在一个程序中建立许许多多的嵌套语句进行程序的搭建 这就导致了如何跳出循环成为了一个重要的环节

现在就来总结下while与break、continue、return以及goto一起使用的案例


注意

1.break语句用于do-while、for、while循环语句中时,可使程序终止循环
2.break语句对if-else的条件语句不起作用
3.在多层循环中,一个break语句只向外跳一层
4.在 C语言 的 switch(开关语句)中,break 语句还可用来在执行完一个 case(分支)后立即跳出当前 switch 结构


(1)while与break:直接跳出整个循环体

break语句的使用场合主要是switch语句和循环结构 在循环结构中使用break语句,如果执行了break语句,那么就退出循环,接着执行循环结构下面的第一条语句。如果在多重嵌套循环中使用break语句,当执行break语句的时候,退出的是它所在的循环结构,对外层循环没有任何影响。如果循环结构里有switch语句,并且在switch语句中使用了break语句,当执行switch语句中的break语句时,仅退出switch语句,不会退出外面的循环结构

while(flag<5)
{
	flag++;
	if(flag == 4)
	{
		break;
	}
	printf("flag = %d.\n",flag)
}

当flag=4,直接跳出while循环


(2)while与continue:直接跳出本次循环,继续执行下次循环

continue语句是这5种结束循环的方式中最特殊的,因为它并没有真的退出循环,而是只结束本次循环体的执行,所以在使用continue的时候要注意这一点

while(flag<5)
{
	flag++;
	if(flag == 4)
	{
		continue;
	}	
	printf("flag = %d.\n",flag);
}

当flag=4,直接跳出本次循环,接着判断while循环的条件


(3)while与return:直接跳出整个函数

如果在程序中遇到return语句,那么代码就退出该函数的执行,返回到函数的调用处,如果是main()函数,那么结束整个程序的运行

void func(void)
{
	while(flag<5)
	{
		if(flag == 4)
		{
			flag++;
			return;
		}
	printf("flag = %d.\n",flag);
	}
}

当flag=4,直接跳出循环和函数func()


(4)while和goto:直接goto到某个地方继续执行

void func(void)
{
	while(flag<5)
	{
		if(flag == 4)
		{
			goto EXIT;
		}
		printf("flag = %d.\n",flag);
	}
	EXIT:return;//EXIT:可以指向任何执行语句 例如EXIT:cout<<"程序结束";
}

goto到EXIT的地方继续执行函数


exit()函数

exit()函数与return语句的最大区别在于,调用exit()函数将会结束当前进程,同时删除子进程所占用的内存空间,把返回信息传给父进程。当exit()中的参数为0时,表示正常退出,其他返回值表示非正常退出,执行exit()函数意味着进程结束;而return仅表示调用堆栈的返回,其作用是返回函数值,并且退出当前执行的函数体,返回到函数的调用处,在main()函数中, return n和exit(n)是等价的


exit函数和return的主要区别

1.exit(); 是整个程序的结束 return();是某个函数的结束,并返回结果
2.exit 是一个函数 return返回函数值,是关键字
3.exit是系统调用级别的,它表示了一个进程的结束 return是语言级别的,它表示了调用堆栈的返回
4.exit是操作系统提供的(或者函数库中给出的) return是C语言提供的

非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的


void func(void) 
{
	while (flag < 5) 
	{
		flag++;
		if (flag == 4)
		{
			exit(1);
		}
		printf("flag = %d.\n", flag);
	}
}

当flag=4,跳出循环并结束程序进程 返回值为非正常值

源自-C++类和对象项目

相关文章:

  • CentOS使用Screen管理会话选项
  • 循环程序跳出(_kbhit()、getch() 、getchar())
  • C++ 类与对象
  • (转) Android中ViewStub组件使用
  • C++ 构造函数与析构函数
  • MFC应用程序中处理消息的顺序,创建窗口的过程关闭窗口的顺序(非模态窗口),打开模式对话框的函数调用顺序...
  • C++ this指针 与 类的继承
  • OpenGL_Qt学习笔记之_07(闪烁的星星)
  • C++ 继承机制中的构造器与析构器
  • C#数组
  • C++ 访问控制
  • ASA842配置内网DNS欺骗测试
  • C++ 覆盖方法与重载方法
  • Ubuntu 12.04 ping 响应慢
  • C++ 静态属性和静态方法
  • JavaScript 如何正确处理 Unicode 编码问题!
  • (三)从jvm层面了解线程的启动和停止
  • 【翻译】babel对TC39装饰器草案的实现
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • git 常用命令
  • If…else
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript设计模式之工厂模式
  • leetcode讲解--894. All Possible Full Binary Trees
  • mac修复ab及siege安装
  • Puppeteer:浏览器控制器
  • Python学习之路16-使用API
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • socket.io+express实现聊天室的思考(三)
  • SQLServer插入数据
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 简析gRPC client 连接管理
  • 坑!为什么View.startAnimation不起作用?
  • 力扣(LeetCode)56
  • 前端之React实战:创建跨平台的项目架构
  • 入门级的git使用指北
  • python最赚钱的4个方向,你最心动的是哪个?
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • ###C语言程序设计-----C语言学习(6)#
  • (多级缓存)多级缓存
  • (二)hibernate配置管理
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .Net的C#语言取月份数值对应的MonthName值
  • @requestBody写与不写的情况
  • @RequestBody与@ResponseBody的使用
  • [].slice.call()将类数组转化为真正的数组
  • [Ariticle] 厚黑之道 一 小狐狸听故事
  • [BeginCTF]真龙之力
  • [BUUCTF]-PWN:wustctf2020_number_game解析(补码,整数漏洞)