循环结构中 break、continue、return 和exit() 的区别

news2024/11/18 5:41:06

循环结构中 break、continue、return 和exit() 的区别


文章目录

  • 循环结构中 break、continue、return 和exit() 的区别
  • 一、break语句
  • 二、continue语句
  • 三、return 语句
  • 四、exit() 函数



说明:本文内容参考牟海军 著《C语言进阶: 重点、难点与疑点解析》,鸣谢

一、break语句

break 主要结合 switch 语句和循环结构,主要有以下特点:
(1) 在循环结构内部执行了 break 语句,就退出该层循环, 执行下一条语句。
(2) 在多重嵌套循环中执行 break 语句,只退出其所在循环层, 外层循环不受影响,继续循环执行。
(3) 如循环结构里有 switch 语句, switch 语句中执行 break 语句时, 仅退出 switch 语句,不会退出外面的循环结构。
在这里插入图片描述

二、continue语句

continue 语句较特殊的, 在循环结构主要有以下特点:
(1)它不会退出循环, 而是只结束本次循环体的执行, 所以使用 continue 时要注意。
(2) for 循环中, 首先执行表达式 1( 注意表达式 1 在整个循环中仅执行一次), 接着执行表达式 2, 如果满足条件, 那么执行循环体, 如果在循环体中执行了 continue 语句, 那么就跳转到表达式 3 处执行, 接下进行下一次循环, 执行表达式 2, 看是否满足条件 ;
(3)在 while循环执行了continue 语句, 就直接跳转到表达式处, 开始下一次的循环判断 ;
(4)在 do while 循环体执行 continue 语句, 就跳转到表达式处进行下一次的循环判断,
在这里插入图片描述

三、return 语句

return 语句主要用在函数或循环结构中,主要有以下特点:
(1)在程序中遇到 return 语句, 那么代码就立刻退出该函数的执行,不会执行return下面的语句, 然后返回到函数的调用处,
(2)如果是 main() 函数, 那么结束整个程序的运行。
(3)如果在函数内部使用while或do while循环语句,在循环语句内部使用return语句,也会退出函数,
在这里插入图片描述

四、exit() 函数

exit()实质为一个函数,表示执行返回,与 return 语句既有联系又有区别;
区别:
(1)执行 exit() 函数意味着进程结束。
(2)调用 exit() 函数将会结束当前进程, 同时删除子进程所占用的内存空间, 把返回信息传给父程。 (3)当 exit() 中的参数为 0 时, 表示正常退出, 其他返回值表示非正常退出, 而 return 仅表示调用堆栈的返回, 其作用是返回函数值, 并且退出当前执行的函数体, 返回到函数的调用处,
(3)总结起来就是无论在函数中还是循环中调用exit()函数,都是终止程序运行

看个例子:

#include <stdio.h>
#include <stdlib.h>

int func()
{
   int n = 1;
   printf("exit 退出函数\n");
   while(1)
   {
     if(9==n)
     {
        exit(n);
     }
     n++;
   }
 
 	return 0;
}

int main(void)
{
         int ret;
         printf(" *********\n");
         ret = func();
         printf("func 函数返回值 ret = %d\n",ret);
         return 0;
}
                                         

执行结果:
∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ *********
exit 退出函数

结论:函数退出之后没有执行main函数最后一条语句,符合上述特性

联系:
(1) 在main() 函数中, return n 和 exit(n) 是等价

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1295020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis中的N+1问题,使用ResultSet来解决,需要存储过程【非常详细】

基础表sql 订单表 CREATE TABLE test_order (order_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 订单id,order_name varchar(255) NOT NULL DEFAULT COMMENT 订单名字,PRIMARY KEY (order_id) ) ENGINEInnoDB AUTO_INCREMENT3 DEFAULT CHARSETutf8mb4 COMMENT订单表;INS…

八个适合女大学生做的赚钱小副业

大学的生活可以说是多姿多彩&#xff0c;既有沉浸在课堂知识中的学习&#xff0c;也有课余时间可以自由支配的自我发展。然而&#xff0c;作为一名女大学生&#xff0c;除了追求优异的学业表现&#xff0c;是否还有其他更加多元化且有意义的方式来充实自己呢&#xff1f; 当然&…

Kubernetes集群安装高可用postgresql

Kubernetes集群安装高可用postgresql Bitnami 提供的 postgresql-ha 解决方案是一个预配置的、高可用的 PostgreSQL 集群配置&#xff0c;通常部署在 Kubernetes 环境中。它使用了一些关键技术和组件来实现数据库的高可用性。&#xff0c;Bitnami postgresql-ha 主要采用以下构…

问题:batchnormal训练单个batch_size就会报错吗

Batch Normalization&#xff08;批标准化&#xff09;是一种深度学习中的正则化技巧&#xff0c;它可以改进网络的训练过程。在训练神经网络时&#xff0c;Batch Normalization可以帮助解决内部协变量偏移&#xff08;Internal Covariate Shift&#xff09;的问题。 在标准的…

库卡LBR_iisy_3_R760协作机器人导入到coppeliasim

1.从库卡官网xpert下载模型 一般载都是这个step文件格式&#xff0c;其他的好像不太好用。coppeliasim导入格式用的是stl,需要用freeCAD打开重新转换一下。下载下来后&#xff0c;很多都是一个整体&#xff0c;在freeCAD导入中&#xff0c;导入选择要不勾选合并。 下载完用CAD …

DHTMLX Scheduler PRO 6.0.5 Crack

功能丰富的 JavaScript调度程序 DHTMLX Scheduler 是一个 JavaScript 日程安排日历&#xff0c;具有 10 个视图和可定制的界面&#xff0c;用于开发任何类型的日程安排应用程序。 DHTMLX JS 调度程序库的主要特性 我们的 JS 调度程序最需要的功能之一是时间轴视图。借助时间轴…

USB Type-C一拖二线缆制作方法

1 实现方法 Figure 1-1 Type-C Socket(母口) Figure 1-2 Type-C Plug(公头) Table 1-1 Type-C Socket Pin连接描述 Type-C Plug连接&#xff0c; 需要做一个一拖二的线&#xff0c;一根的一端是USB&#xff0c; 另外一根的一端是USB转UART&#xff0c; 参考Table 1-2。 Table 1…

c++详解栈

一.什么是栈 堆栈又名栈&#xff08;stack&#xff09;&#xff0c;它是一种运算受限的数据结构&#xff08;线性表&#xff09;&#xff0c;只不过他和数组不同&#xff0c;数组我们可以想象成一个装巧克力的盒子&#xff0c;你想拿一块巧克力&#xff0c;不需要改变其他巧克…

私域运营:12个朋友圈经营模板

做私域运营的各位&#xff0c;想必大家都会烦恼朋友圈要发什么才能保证最高效吧&#xff01; 首先&#xff0c;我们需要明确&#xff0c;朋友圈是什么&#xff1f; 朋友圈是我们打造信任感的地方&#xff0c;也是我们的信息能够及时触达用户的重要渠道。很多人都有一个习惯&a…

java每日一记 —— mybatis的动态数据源切换

动态数据源切换 1.环境初始化2.切换数据源代码3.第二节代码的测试4.用注解的方式进行优化 此代码在jdk11上测试通过&#xff0c;SpringBoot版本为2.7.14 1.环境初始化 1.创建两个库 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- 表结构 DROP TABLE IF EXISTS t_stu; CRE…

电脑录屏软件哪个好?全面对比,为您揭秘

电脑录屏软件成为创作者、教育者以及普通用户的得力工具&#xff0c;用于捕捉屏幕上的精彩瞬间或创作教学内容&#xff0c;可是电脑录屏软件哪个好呢&#xff1f;本文将深入比较三款备受瞩目的电脑录屏软件&#xff0c;通过详细的分步骤介绍&#xff0c;帮助用户了解它们的使用…

【Element-ui】Icon 图标与Button 按钮

文章目录 前言一、Icon 图标1.1 作用1.2 使用方法1.3 图标集合 二、Button 按钮2.1 基础用法2.2 禁用状态2.3 文字按钮2.4 图标按钮2.5 按钮组2.6 加载中2.7 不同尺寸 总结 前言 在前端开发中&#xff0c;界面的设计和交互是至关重要的一部分。一个直观、易用的界面往往离不开…

在winform中使用blazor hybrid构建页面

1、Blazor Hybrid简介 Blazor Hybrid 使开发人员能够将桌面和移动本机客户端框架与 .NET 和 Blazor 结合使用。在 Blazor Hybrid 应用中&#xff0c;Razor 组件在设备上是本机运行的。 这些组件通过本地互操作通道呈现到嵌入式 Web 视图控件。 组件不在浏览器中运行&#xff0…

怎么将用户引流到你的私域中?

微信私域运营是一种利用微信平台建立与用户深度联系的营销方式&#xff0c;可在私域中触达并服务用户。 那么如何将在将用户引流至你的私域中呢&#xff1f; 可以从以下几个小方法入手。 ①打造一个吸引人的个人品牌形象非常重要。在社交媒体上展示真实、独特、专业的一面&a…

oracle实验2023-12-8--触发器

第十四周实验 【例】功能要求&#xff1a;增加一新表XS_1&#xff0c;表结构和表XS相同&#xff0c;用来存放从XS表中删除的记录。 分析: 1、创建表 xs_1 SQL> create table xs_1 as select * from xs; Table created SQL> truncate table xs_1; Table truncated题目&a…

详解数据入表准备工作:如何判定数据资源?

务部发布的《企业数据资源相关会计处理暂行规定》即将于明年1月生效&#xff0c;但《暂行规定》并未详细解释数据资源这一概念。到底什么是数据资源&#xff0c;怎样将数据资源入表&#xff0c;成为众多国有企业与上市公司关心的问题。 — 01 — 什么是数据资源&#xff1f;…

【Linux系统化学习】命令行参数 | 环境变量的再次理解

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Linux系统化学习 代码仓库&#xff1a;Gitee 目录 mian函数传参获取环境变量 手动添加环境变量 导出环境变量 environ获取环境变量 本地变量和环境变量的区别 Linux的命令分类 常规命令 内建命令 …

PostgreSQL 技术内幕(十二) CloudberryDB 并行化查询之路

随着数据驱动的应用日益增多&#xff0c;数据查询和分析的量级和时效性要求也在不断提升&#xff0c;对数据库的查询性能提出了更高的要求。为了满足这一需求&#xff0c;数据库引擎不断经历创新&#xff0c;其中并行执行引擎是性能提升的重要手段之一&#xff0c;逐渐成为数据…

最新版IDEA专业版大学生申请免费许可证教学(无需学校教育邮箱+官方途径+非破解手段)

文章目录 前言1. 申请学籍在线验证报告2. 进入IDEA官网进行认证3. 申请 JB (IDEA) 账号4. 打开 IDEA 专业版总结 前言 当你进入本篇文章时, 你应该是已经遇到了 IDEA 社区版无法解决的问题, 或是想进一步体验 IDEA 专业版的强大. 本文是一篇学生申请IDEA免费许可证的教学, 在学…

SpringAMQP 快速入门

SpringAMQP 快速入门 1. 创建项目2. 快速入门2.2.1 消息发送2.2.2 消息接收 3. 交换机3.1 Fanout Exchange&#xff08;扇出交换机&#xff09;3.1.1 创建队列与交换机3.1.2 消息接收3.1.3 消息发送 3.2 Direct Exchange&#xff08;直连交换机&#xff09;3.2.1 创建交换机与队…