P6 C++控制流语句(continue, break, return)

news2024/11/15 4:36:35

前言

今天我们讲的是控制流语句,本期内容是上期课程的延续。

控制流语句一般与循环语句一起工作,它们让我们可以更好的控制这些循环的实际运行。

我们有三个主要的控制流语句可以使用,continue 、break 和 return,它们有不同的功能。

  1. continue 只能在循环中使用,它表示 进入这个循环的下一个送代(前提是:如果还有下一次迭代,如果没有,循环就会结束)。
  2. break 主要用于循环中,它也会出现在 switch 语句中,break 意思是要跳出循环,也就是终止循环。
  3. return 应该是最有 ''力量'' 的一个语句,因为 return 会完全 ''脱离'' 你的函数,如果你在一个函数中碰到了一个 return 关键字,程序运行会退出这个函数,当然函数可能需要一个返回值,如果只有 return 本身,你只能返回 return 本身,return 本身只适用于 void 函数,如果你的函数需要返回值的话,它需要提供一个返回值。

我们来看一个实际的例子。下面是一段我们之前使用过的程序。

#include <iostream>

 int main(int argc, const char** argv) 
{
    for(int i = 0; i <5; i++)
    {   
        std::cout << i<< ":\tHello, World!\n";
    }
    return 0;
}

我们那代码进行编译执行,毫无疑问,会打印五次hello world

continue

我们的第一个控制流语句,是continue。

continue 将跳到 for 循环的下一个迭代,如果我按照下面的方式修改,它将不会影响 for 循环的行为,因为这个位置已经是 for 循环的结尾了,前面该执行的代码也执行完了。

当程序运行到第八行时,不管怎样,这一行会继续到下一次送代,所以这根本不会改变它的行为。

然而,如果我再这样做,你就会看到明显的不一样了。因为如果 i 对 2 取余等于 0 ,就会执行 continue,所以从第一个开始,每两个迭代会跳过一个。

我们可以记录实际的 i 变量的值来查看当前的索引值是怎么变化的。

当 i 为 0 时,它不会运行,因为 0模2 的结果是 0,结果是 true,程序会执行 continue。当 i 是1 时,我们会输出记录,当等于 2 时,不会输出,当等于 3 时,我们会输出记录,当等于 4 时,不会输出,程序到不了 5,因为如果等于 5,我们就不会执行 for 循环了,因为这个 for 循环的条件就是 i 小于 5。

 

break

如果我们把上面代码中的 continue 替换成 break,你可以看到情况是完全不一样的。

#include <iostream>

 int main(int argc, const char** argv) 
{
    for(int i = 0; i <5; i++)
    {   
        if(i%2 == 0)
            break;;
        std::cout << i<< ":\tHello, World!\n";
    }
    return 0;
}

程序什么都没有输出

我们做一下修改。

第一次迭代的时候,i 为 0, i+1 模 2 的结果是 1,所以 if 评估表达式的结果为 false,程序不会到达 break 语句。

第二次迭代的时候,i 为1, i+1 模 2 的结果是 0,所以 if 评估表达式的结果为 true,程序执行 break 语句,循环结束了。

这就是 break,它可以让程序完全跳出 for 循环,当然这些控制流语句可以用在所有的循环语句中,所以它们在 for 循环、while 循环、do-while 循环中的运作方式是一样的。

好了,最后一个是 return。

return

当前主函数是一个需要返回 int 的函数(第三·行有关键字 int ),所以我们不能只是写 return,我们需要写 return XXX。

我们编译试一下

程序报错,你可以看到程序申明必须返回一个值。

 

关于 return 语句,基本上就是这些了,需要注意的是,它不是必须在循环中使用,这点与 continue 和 break 不同。当然,如果你的函数要一个返回值,记得在 return 后面给它一个对应的值来返回。

后话

整体上说,这些控制语句就是控制你的代码如何 流动 的。控制语句结合循环语句和 if 语句一起完成程序运行,这些就是编程的基本逻辑,你可以使用这些控制语句语句决定下一行要执行什么代码,这些是可以改变你的程序行为的工具。

之后的系列中,我们会一直使用所有这些控制语句,并向你们展示它们在哪里使用以及怎么用。还可能向您展示如果不使用它们如何编写代码。

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

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

相关文章

Nginx模块开发之http handler实现流量统计(1)

文章目录 一、handler简介二、Nginx handler模块开发2.1、示例代码2.2、编写config文件2.3、编译模块到Nginx源码中2.4、修改conf文件2.5、执行效果 三、Nginx的热更新总结 一、handler简介 Handler模块就是接受来自客户端的请求并产生输出的模块。 配置文件中使用location指令…

UML建模图文详解教程06——顺序图

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文参考资料&#xff1a;《UML面向对象分析、建模与设计&#xff08;第2版&#xff09;》吕云翔&#xff0c;赵天宇 著 顺序图概述 顺序图(sequence diagram&#xff0c;也…

docker安装以及idea访问docker

其他目录&#xff1a; docker 安装环境&#xff08;有空更新&#xff09; url “” docker 打包java包&#xff0c;并运行&#xff08;有空更新&#xff09; url “” docker 打包vue &#xff08;有空更新&#xff09; url “” docker 多服务 &#xff08;有空更新&#xff…

扩展外部eMMC存储

By Toradex胡珊逢 简介 存储器的嵌入式设备中扮演着重要角色&#xff0c;上面不仅安装有操作系统&#xff0c;同时也保存着应用程序和运行日志等。对于存储器如 eMMC&#xff0c;写入的数据量决定其使用寿命&#xff0c;对于有大量日志记录的应用&#xff0c;通常可以选用一个…

【Unity】接入MAX聚合广告SDK Applovin + GoogleAdmob

版本&#xff1a; Unity&#xff1a;2019.4.35f1gradle plugin: 4.2.0 &#xff08;实际要7.0 对应build_tools:34.0.0) gradle: 6.7.1 &#xff08;实际要7.0 对应build_tools:34.0.0) jdk: 1.8.0_241build_tools: 34.0.0 ndk: android-ndk-r19 文档&#xff1a; 6.0.1(Andro…

windows根据已有的安卓签名文件获取MD5签名

windows根据已有的安卓签名文件获取MD5签名 0 现状 uniapp 本机号码一键登录需要MD5的&#xff0c;现有的签名文件但是只有SHA1和SHA256 查看SHA1和SHA256 keytool -list -v -keystore [你的.keystore文件]1 前提 已有生成签名文件的环境 搭建Openssl环境&#xff0c;设置…

基于Springboot+Vue选课系统

选课系统要求 (1)数据库表&#xff1a;教师信息表、学生信息表、课程表、选课表 其中&#xff0c;教师信息表、学生信息表和选课表的数据需要提前设置&#xff0c;本题主要操作课程表 (2) 技术架构&#xff1a; 后台使用springboot 前端使用vue-admin-template (3) 考试时间&…

西米支付:如何设计和构建游戏支付系统?

如何设计和构建游戏支付系统&#xff1f; 目前&#xff0c;游戏开发中最常见的支付方式包括微信支付、支付宝支付和苹果支付等。今天&#xff0c;我将与大家分享游戏支付系统的架构和设计。 游戏支付的主要业务流程是指游戏玩家在游戏中购买虚拟物品或服务所进行的支付过程。一…

鸿蒙 ark ui 轮播图实现教程

前言&#xff1a; 各位同学有段时间没有见面 因为一直很忙所以就没有去更新博客。最近有在学习这个鸿蒙的ark ui开发 因为鸿蒙不是发布了一个鸿蒙next的测试版本 明年会启动纯血鸿蒙应用 所以我就想提前给大家写一些博客文章 效果图 具体实现 我们在鸿蒙的ark ui 里面列表使…

【jvm】虚拟机之堆

目录 一、堆的核心概述二、堆的内存细分&#xff08;按分代收集理论设计&#xff09;2.1 java7及以前2.2 java8及以后 三、堆内存大小3.1 说明3.2 参数设置3.3 默认大小3.4 手动设置3.5 jps3.6 jstat3.7 OutOfMemory举例 四、年轻代与老年代4.1 说明 五、对象分配过程5.1 说明5…

开源Flutter on Desktop项目-极扩安卓开发者工具

极扩-安卓开发者工具 他能干嘛 这个Flutter on Desktop桌面项目可以辅助你开发APP&#xff0c;支持分析一些运行数据以及操作APK安装等功能&#xff0c;甚至我还加入了Window安卓子系统的功能。 在它的帮助下&#xff0c;你可以快速查看当前正在运行的Activity&#xff0c;给你…

OpenCV实现图像噪声、去噪基本方法

一、噪声分类 1、高斯噪声 指服从高斯分布&#xff08;正态分布&#xff09;的一类噪声&#xff0c;其产生的主要原因是由于相机在拍摄时视场较暗且亮度不均匀造成的&#xff0c;同时相机长时间工作使得温度过高也会引起高斯噪声&#xff0c;另外电路元器件白身噪声和互相影响…

简单聊聊加密和加签的关系与区别

大家好&#xff0c;我是G探险者。 平时我们在项目上一定都听过加密和加签&#xff0c;加密可能都好理解&#xff0c;知道它是保障的数据的机密性&#xff0c;那加签是为了保障啥勒&#xff1f;它和加密有啥区别&#xff1f; 带着这个疑问&#xff0c;我们就来聊聊二者的区别。…

【Python】Fastapi swagger-ui.css 、swagger-ui-bundle.js 无法加载,docs无法加载,redocs无法使用

使用fastapi的时候&#xff0c;swagger-ui.css 、swagger-ui-bundle.js、redoc.standalone.js 有时候无法加载&#xff08;国内环境原因或者是局域网屏蔽&#xff09;&#xff0c;此时就需要自己用魔法下载好对应文件&#xff0c;然后替换到fastapi里面去。 fastapi里面依靠这…

redis运维(十九)redis 的扩展应用 lua(一)

一 redis 的扩展应用 lua redis如何保证原子操作 说明&#xff1a;引入lua脚本,核心解决原子性问题 ① redis为什么引入lua? lua脚本本身体积小,启动速度快 ② redis引入lua的优势 小结&#xff1a; 类似自定义redis命令 ③ redis中如何使用lua ④ EVAL 说明&#…

《算法通关村——数论问题解析》

《算法通关村——数论问题解析》 辗转相除法 辗转相除法又叫做欧几里得算法,是公元前 300 年左右的希腊数学家欧几里得在他的著作《几何原本》提出的。最大公约数(greatest common divisor&#xff0c;简写为gcd&#xff09;&#xff0c;是指几个数的共有的因数之中最大的一个…

csv文件添加文件内容和读取

append content to file import numpy as np acc_listnp.array([0.97,0.92,0.93,0.89]) # 注意这个地方添加文件不需要特别声明是什么文件 file open("result.csv", "a") print("{:.2f}, {:.2f}".format(acc_list.mean(), acc_list.std()), f…

leetcode刷题日志-167.两数之和II-输入有序数组

给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xff0c;则 1 < index1 < index2 < numbers.…

浏览器没收到返回,后端也没报错,php的json_encode问题bug

今天网站遇到个问题&#xff0c;后端返回异常&#xff0c;但是浏览器状态码200&#xff0c;但是看不到结果。经过排查发现&#xff0c;我们在返回结果的时候使用了json_encode返回给前端&#xff0c;结果里面的字符编码异常&#xff0c;导致json_encode异常&#xff0c;但是php…

ComfyUI搭建使用教程

ComfyUI 是一个基于节点流程式的stable diffusion AI 绘图工具WebUI&#xff0c; 你可以把它想象成集成了stable diffusion功能的substance designer&#xff0c; 通过将stable diffusion的流程拆分成节点&#xff0c;实现了更加精准的工作流定制和完善的可复现性。但节点式的工…