continue和break的区别

2023-05-16

break 语句很重要,用得非常多,初学者一定要掌握。continue 语句虽然没有 break 语句用得多,但也经常用到,而且不可或缺,需要用到 continue 的时候其他语句是无法替代的。

前面已经介绍过 break 语句,它不仅可以跳出“循环体”,还可以跳出 switch。但事实上,break 也只能用于这两种情况。break 语句不能用于循环语句和 switch 语句之外的任何其他语句中。

不管是 for 循环,还是 while 循环,或者是 do…while 循环,都可以用 break 跳出来,但是 break 只能跳出一层循环。当有多层循环嵌套的时候,break只能跳出“包裹”它的最里面的那一层循环,无法一次跳出所有循环。

同样,在多层 switch 嵌套的程序中,break 也只能跳出其所在的距离它最近的 switch。但多层 switch 嵌套实在是少见。

continue 的用法十分简单,其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,然后进行下一次是否执行循环的判定。

continue和break的区别

continue 语句和 break 语句的区别是,continue 语句只结束本次循环,而不是终止整个循环。break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立。而且,continue 只能在循环语句中使用,即只能在 for、while 和 do…while 中使用,除此之外 continue 不能在任何语句中使用。

所以,再次强调:continue 不能在 switch 中使用,除非 switch 在循环体中。此时 continue 表示的也是结束循环体的本次循环,跟 switch 也没有关系。

例如,下面为使用switch模拟电梯运行的代码:

# include <stdio.h>
int main(void)
{
int val; //variable的缩写, “变量”的意思
printf("请输入您想去的楼层:");
while (1)
{
scanf("%d", &val);
switch (val)
{
case 1:
printf("1层开!\n");
break; //跳出switch
case 2:
printf("2层开!\n");
break; //跳出switch
case 3:
printf("3层开!\n");
break; //跳出switch
default:
printf("该层不存在, 请重新输入:");
continue; //结束本次while循环
}
break; //跳出while
}
return 0;
}

输出结果是:
请输入您想去的楼层:4
该层不存在, 请重新输入:3
3层开!

此时在 default 中如果不使用 continue 的话,那么最后的“该层不存在,请重新输入:”仍然不起作用。它虽然能输出,但输出之后直接就执行后面的 break 了,用户仍然没有重新输入的机会。而加 continue 之后就会结束本次 while 循环,即后面的 break 语句本次就不会执行,而是直接进入 while 循环,这样用户就有“重新输入”的机会了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

continue和break的区别 的相关文章

  • PHPexcel报出错误‘break‘ not in the ‘loop‘ or ‘switch‘ context

    今天本地改代码改完做测试发现现在的文件中打开是 break 39 not in the 39 loop 39 or 39 switch 39 context 这样的 xff1b 当时一脸懵逼 xff0c 这是一个老项目最近也没动啊怎么回事
  • C 语言中的goto、 break 和 continue 语句使用

    一 goto 语句 goto 语句为无条件跳转 xff0c goto 语句后面带一个标识符 xff0c 该标识符是同一个函数 内某条语句的标号 标号可以出现在任何可执行语句的前面 xff0c 并且以一个冒号 xff1a 作为后缀 gt Fi
  • 强制 try 块在两者之间中断的最佳方法是什么?

    我有一个try catch阻止我想要的break like a switch阻止但我找不到推荐的方法 我正在获取大量数据try catch块并希望在满足特定条件的情况下停止其间的获取 只是为了让它现在正常工作 我故意强制代码进入catch
  • 分号有什么作用?

    我在网上找到了一个函数来帮助我完成当前的项目 并且它的某些行上有分号 我想知道为什么 是为了破坏功能吗 def containsAny self strings alphabet abcdefghijklmnopqrstuvwxyz0123
  • HTML5 canvas ctx.fillText 不会换行吗?

    如果文本包含 n 我似乎无法将文本添加到画布 我的意思是 换行符不显示 工作 ctxPaint fillText s ome n n br thing x y 上面的代码将会绘制 s ome n br thing 在一条线上 这是 fill
  • C++Continue 语句混乱

    背景 我正在阅读一本旧的 C 入门读物 我在床底下放了几年了 在阅读某一章时 我碰巧遇到了 continue 声明 我阅读了书中有关它的信息 但是 这本书在细节上有点缺乏 出于好奇 我想测试 continue 声明 看看我是否可以自己弄清楚
  • 带 Break 的无法到达语句

    所以我之前有一个问题 但意识到我发布了错误的违规代码 我已在下面标记了令人反感的言论 我想要做的是使用该 switch 语句设置每个运算符的优先级 也许有人可以指出我正确的方向 请注意 我正在运行 JAVA 7 因此 String Swit
  • 继续认为有害? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C# 开关/中断

    看来我需要使用 C 在 switch 语句中的每个 case 块中使用中断 我可以在其他语言中看到这样做的原因 您可以在其中转到下一个案例陈述 案例块是否有可能落入其他案例块 非常感谢 非常感谢 是的 您可以通过两种方式进入下一个案例块 您
  • Haskell:有条件地中断循环

    我想在这样的情况下打破循环 import Data Maybe fromJust isJust Maybe Just tryCombination Int gt Int gt Maybe String tryCombination x y
  • 中断/退出脚本

    我有一个程序可以进行一些数据分析 并且有几百行长 在程序的早期 我想做一些质量控制 如果没有足够的数据 我希望程序终止并返回到 R 控制台 否则 我希望执行其余的代码 我试过了break browser and quit并且它们都不会停止程
  • 如何根据用户输入退出 while(1) ?

    我有一个简单的server client终端 服务器从客户端接收字符串并对其进行处理 服务器只有收到后才会开始处理end of input在我的例子中的角色是 下面的 while 循环旨在允许用户输入多个不同的字符串 并且应该在接收到时停止
  • Visual Studio 2015 在处理异常时意外中断

    一张图片值得很多文字 以下怎么可能 可以看出 Visual Studio 2015 最新版本 在Common Language Runtime Exceptions under Exception Settings未选中 Enable Ju
  • XML 格式中的换行符?

    在 XML 中编辑字符串时 我需要添加换行符 我想问一下 为 android 编程时 正确的形式是什么 因为 br 有效 但 ECLIPSE 将该区域标记为有问题 如果我查看建议 Eclipse 会告诉我我应该添加一个结束标签 如果我添加换
  • 在 D3 强制布局节点标签中插入换行符

    因此 我正在使用力定向图 并且我已将鼠标悬停在节点上的 text 更改为数据中的另一个文本 我的代码如下所示 script var data nodes name YHO full name Yahoo type 1 slug www ya
  • 语法错误:“继续”在循环中不正确

    我已经为这个错误苦苦挣扎了一段时间 对于口译员为什么抱怨 继续 似乎有不同的看法 所以我想提供下面的错误代码 import tweepy import time def writeHandlesToFile file open dataFi
  • C# 退出使用 lambda 的泛型 ForEach

    有谁知道是否可以退出使用 lambda 的通用 ForEach 例如 someList ForEach sl gt if sl ToString foo break continue processing sl here some proc
  • Rust 比赛的早期突破

    我想切换多种可能的情况x有一种情况 这里x 0 我想检查一些附加代码的结果以确定下一步要做什么 一种可能性是提前结束比赛 I d use break在 C 中执行此提前返回操作 但这在 Rust 中是不允许的 return从父函数返回 在本
  • 在 Stata 的 do-file 中将命令分成几行

    我想运行keepStata 12 中 do 文件中的命令 keep a1 a2 a3 a4 a5 b1 b2 b3 b4 b5 c1 c2 c3 c4 我想要的是执行以下操作 keep a1 a2 a3 a4 a5 b1 b2 b3 b4
  • SQL 数据范围最小值最大值类别

    我想确定 2 个类别的范围 A 类和 B 类 A 从 1 到 15 开始 B 从 16 到 31 开始 然后 A 再次从 32 到 40 开始 现在如果运行此查询 select min range max range from table

随机推荐

  • .Net Core微服务入门——Ocelot API网关接入(二)

    Net Core微服务入门 Ocelot API网关接入 xff08 二 xff09 我们先接入Consul xff0c 实现服务发现 服务发现 1 引入 Ocelot Provider Consul 包 2 修改ocelot json x
  • .NET Core根据环境变量支持多个 appsettings.json配置文件

    NET Core根据环境变量支持多个 appsettings json配置文件 在项目开发的过程当中 xff0c 开发环境 测试环境 生产环境的配置肯定是不一样的 xff0c 单靠一个 appsettings json xff0c 没法满足
  • (转)SQL Server 2008 允许远程连接的解决方法

    用户在使用SQL Server 2008远程链接时 xff0c 可能会弹出如下对话框 xff1a 在链接SQL服务器时发生网络链接错误或特定实例错误 SQL服务器不存在或者链接不成功 请验证用户名是否正确或SQL服务器是否已经配置远程链接功
  • .Net Core微服务入门——Ocelot和Consul集群高可用

    Net Core微服务入门 Ocelot和Consul集群高可用 上一章 我们ocelot网关顺利的接入了consul集群 并且访问成功 但是 我们也遇到了问题 把 192 168 8 25 上的consul停掉了 重新访问ocelot网关
  • .Net Core微服务入门——Swagger接入

    Net Core微服务入门 Swagger接入 一 API接入Swagger 1 引入包 xff1a Swashbuckle AspNetCore 2 修改Startup xff0c 在ConfigureServices 中添加 Swagg
  • Docker 镜像迁移

    Docker 镜像迁移 由于生产环境外部无法访问 xff0c 需要将本地仓镜像包迁移到生成环境服务器上 1 将私有仓镜像导出 docker save span class token operator span o ocelot span
  • Docker 自动更新镜像和容器-Watchtower

    Docker 自动更新镜像和容器 Watchtower 我们Consul集群已经搭建好了 xff0c Docker api 服务也部署好了 xff0c 但是呢 xff0c 又碰到一个问题 我们每次更新api 服务 xff0c 都需要拉取镜像
  • .Net Core微服务入门——NLog接入

    Net Core微服务入门 NLog接入 Nlog接入 1 引入NLog Web AspNetCore 包 2 添加NLog 配置文件 nlog config 目录自定义 内容 xff1a lt xml version 61 34 1 0
  • .Net Core微服务入门——ELK日志中心

    Net Core微服务入门 ELK日志中心 Elasticsearch 是个开源分布式搜索引擎 xff0c 它的特点有 xff1a 分布式 xff0c 零配置 xff0c 自动发现 xff0c 索引自动分片 xff0c 索引副本机制 xff
  • MySQL Slave备份异常处理

    昨天Mysql备份突然出现问题 xff0c 从库一直没读到数据 1 执行 show slave status 发现一直处于Reading event from the relay log xff0c Seconds Behind Maste
  • Vue Loading PostCSS Plugin failed: Cannot find module ‘autoprefixer‘ 问题

    Vue Loading PostCSS Plugin failed Cannot find module autoprefixer 问题 vue运行时 xff0c 提示Vue Loading PostCSS Plugin failed Ca
  • 树莓派监测CPU温度

    通过raspberrypi os下的 sys class thermal thermal zone0 temp 文件获取CPU温度 xff0c 并用bc命令转换为更直观的浮点数温度显示 xff0c 并通过watch命令实时监控 执行watc
  • pyqt5自定义QWidget设置setStyleSheet不成功解决方法

    发现继承自QWidget的自定义类 xff0c 使用setStyleSheet无效 xff0c 解决办法 xff1a 第一种 xff1a 将继承QWidget改为QFrame xff0c 就可以了 第二种 xff1a 继承QWidget的自
  • debian软件源source.list文件格式说明

    在安装完debian操作系统之后大家做的第一件事大概就是修改source list文件了吧 xff0c 否则你是无法在线更新软件的 xff0c 那么source list文件中的各个配置项的具体含义你搞懂了么 xff1f 下面就以我的sou
  • 主机和虚拟机能ping通,但是连不上?已解决。

    有时候突然遇到这样的问题 xff0c 主机和虚拟机都能ping通 xff0c 但是就是连不上CRT或者Xshell 解决如下 xff1a 第一步 xff1a 打开 网络 xff1a 第二步 xff1a 打开网络共享中心 第三步 第四步 xf
  • 操作系统 - Lightdm

    了解Display Manager 1 Definition In the X Window System an X display manager is a graphical login manager which starts a s
  • 5G MEC 的本质是“联接+计算”

    本文针对边缘计算 xff08 multi access edge computing xff0c MEC xff09 的多种概念 xff0c 指出移动运营商立足的5G MEC 技术本质是 联接 43 计算 针对具体场景和关键诉求 xff0c
  • 关于解决VScode插件comment translate不能立刻翻译的问题

    安装好comment translate 插件之后正常显示效果应该是如下图才对 但笔者在安装插件之后没办法实现 xff0c 各种百度查试了很多方法 xff0c 都没有解决 xff0c 最后重新装了个Vscode才解决了问题 xff0c 具体
  • 二值信号量和互斥量在FreeRTOS中的代码中的区分

    互斥量的创建 xff1a 创建MuxSem MuxSem Handle 61 xSemaphoreCreateMutex if NULL 61 MuxSem Handle printf 34 MuxSem Handle互斥量创建成功 r n
  • continue和break的区别

    break 语句很重要 xff0c 用得非常多 xff0c 初学者一定要掌握 continue 语句虽然没有 break 语句用得多 xff0c 但也经常用到 xff0c 而且不可或缺 xff0c 需要用到 continue 的时候其他语句