我在一个双层循环的里层用break
网上说的是只跳出里层循环,所以应该显示十层呀,可是结果却只有一个,好像break直接跳出了外层循环。
更奇怪的是,计算着一层用了一分多钟,貌似把里层的5050个循环也都循环了
如果把里层循环去掉,结果是十个结果,计算的非常快
PS:里层循环把i改了还是不行结果还是那样的
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

关于c++ break语句跳出几层循环的问题
收起
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
当前问题酬金
¥ 0 (可追加 ¥500)
支付方式
扫码支付
17条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
xbbguai 2018-06-08 02:51关注内层循环控制变量和外层控制变量是同一个i。跳出内层循环后,外层循环的条件有可能已经不存在(要求i < 10)。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 3无用举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
galliumh 2018-06-08 03:02关注里层循环使用外层循环变量,break不使用标签只能跳出当前循环在语法上是必然的,至于外层循环也结束则是满足了结束条件而非break。只需要将里层循环的变量改为新变量即可验证
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 1无用举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
abcdefzhw 2018-06-08 02:50关注break 跳出当前循环,跳出里层的循环
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
xbbguai 2018-06-08 02:52关注补充:将内层循环改成: for (int n = 0; n < 5050; n++) .... 试试
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
Fatal Error 2018-06-08 02:53关注内层循环变量改一个试试,换成 int j = 0; j < 5050; j++. 你两层都用了 i,外层很容易跳出来。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
qq_24872853 2018-06-08 02:56关注break的时候看下i是几,然后往下走一步,你就知道为什么连外层循环也break了(因为这时候判断i已经大于10了,所以外层也就不再循环了)
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
galliumh 2018-06-08 03:12关注改了里层循环的变量还是跳出外层循环,建议debug,或者精简里层循环逻辑,比如去掉里层循环的函数调用,将跳出判断逻辑改一些(必须里层循环10次)
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
VIVIAN_WO 2018-06-08 03:14关注你在外层循环,最下面输出 一句话,看看会不会执行,会执行,就是跳出里面循环
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
钟晚tk 2018-06-08 03:56关注break在某种程度上终止FOR循环,在这之前循环不会跳出循环范围
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
xbbguai 2018-06-08 05:31关注内层的break条件是ifgoto()的结果为0. 你应当在调试环境里跑一跑看,如果ifgoto()从来就没返回过0,内层每次都要循环5050次。
当你把内层循环控制变量名改为i以外的变量之后, 一定不会在发生你认为的break既跳出内层循环又跳出外层循环的问题。另外,i是只在for里起作用,但这句话应当理解为:如果在for语句里直接定义循环控制变量,循环控制变量i的作用域范围为for语句内,也就是包括了循环体。
强烈建议你使用debugger跟踪整个循环执行过程,学好for循环的内在原理。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
韩小布 2018-06-08 05:58关注内层的break条件是ifgoto()的结果为0. 你应当在调试环境里跑一跑看,如果ifgoto()从来就没返回过0,内层每次都要循环5050次。
当你把内层循环控制变量名改为i以外的变量之后, 一定不会在发生你认为的break既跳出内层循环又跳出外层循环的问题。另外,i是只在for里起作用,但这句话应当理解为:如果在for语句里直接定义循环控制变量,循环控制变量i的作用域范围为for语句内,也就是包括了循环体。
强烈建议你使用debugger跟踪整个循环执行过程,学好for循环的内在原理。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
xueyajiang 2018-06-08 06:26关注其实很简单,如果你想看到底哪里错了。可以编译成汇编代码,就看的比较清楚了.
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
hbigtwo 2018-06-08 06:37关注两个内部变量同名,应该使用静态变量
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
_肆 2018-06-08 06:53关注你这个int i的地方在外for里,所以外for里的i都是一个i,第一种你执行的时候,可能i在内for已经超过10了,这时候跳出内for,外for再判定i<10判定失败,跳出大for所以你把内for里换了另一个变量,执行的结果是咋样的,你说还是不对我们也不知道你要求的是咋样的,毕竟你这个代码不全
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
asadgfjlka 2018-06-08 07:07关注将跳出判断逻辑改一些
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
haifanyuntian 2018-06-08 09:46关注break退出当前循环,但不会跳出被包含的所有循环。
两个循环的循环变量是一样的,退出最里面的循环后不满足外面的循环所以打印一组数据就退出,建议修改变量加上打印试试本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
fnlaivhafgaah 2018-06-08 15:31关注里循环和外循环的循环条件的变量换一下
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
报告相同问题?
- 2018-06-08 02:43回答 17 已采纳 内层循环控制变量和外层控制变量是同一个i。跳出内层循环后,外层循环的条件有可能已经不存在(要求i < 10)。
- 2021-10-21 11:10回答 2 已采纳 if (ch[i] <= 90 || ch[i] >= 65),你看你写的这句话。。。这不就是包含了所有的值吗?和你写了一个if (true)一样,这样怎么才能进到else if里的bre
- 2020-09-11 21:59回答 2 已采纳 conv中,写ans=0; 我调试了一下,发现不输出是因为dif根本不为6174,是ans没有初始化的原因。 写完ans=0就能正常输出。 而写输出语句ans就=0;??? 可能是内存释放?
- 2021-05-21 09:49weixin_39542742的博客 break跳出一层循环,当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。break 在一些计算机编程语言中是保留字,其作用大多情况下是终止所在层的循环。在 C语言 的 switch(开关语句)中,...
- 2022-07-25 22:03回答 4 已采纳 只跳出do语句
- 2022-09-07 21:48回答 2 已采纳 这种情况需要加一个标志变量,比如在第7行增加一个int变量flag = 1;当case 0中判断需要退出内层while时,将flag设置为0,然后在j++行之前或之后判断flag是否为0,如果为0就b
- 2019-01-04 18:52回答 4 已采纳 break可以for循环, break 其作用大多情况下是终止所在层的循环
- 2021-05-22 03:23彼谷的博客 C break跳出多层循环在C/C++中,跳出多层循环有3中方法:...其中break对if-else语句无效,每次使用只能跳出一层循环。用break的具体方法为:bool BREAK=false;while(...){for(...){if(...){BREAK=true;break;}}if(BR...
- 2021-11-09 15:41回答 1 已采纳 遇到break会直接跳出for循环,跳出循环后++当然也就不执行了。b变化如下 1、4、7、10、13、16、19、22a每次加1,1、2、3、4、5、6、7、8
- 2022-09-22 22:54回答 4 已采纳 你上面的for循环加了个分号
- 2021-05-21 18:33回答 1 已采纳 if (r != run.end()) { continue; } 这里(你贴出来的21行-23行),它在13行的for循环里,你for循环已经判断r != run.end()了,也就是说,你这
- 2020-12-26 04:31实际上,break语句还可以用于循环体内。break语句的一般格式为: break; 其作用为使流程从循环体内跳出循环体,即提前结束循环,接着执行循环体下面的语句。break语句只能用于循环语句和switch语句内,不能单独...
- 2022-10-29 17:44回答 3 已采纳 scanf中的\n删掉
- 2021-11-21 22:38好好学吧867的博客 本代码主要通过预测结果来测试break到底跳出来几层循环。 #include <stdio.h> int main(){ int i,j,sum; for(i=1;i<=2;i++){ for(j=1;j<=10;j++){ if(sum>=6){ break; ...
- 2021-05-22 05:03starspiaohongyu的博客 C/C++ 跳出多重循环方法c语言的break语句只能跳出离它最近的一层循环,但是我们有时候需要跳出多层循环,以下有几种跳出多重循环的方法:1. 使用gotofor (int i = 0; i MAX1; i++){for (int j = 0; j MAX2; j++){if ...
- 没有解决我的问题, 去提问
悬赏问题
- ¥15 为什么我的虚拟机运行配置apache的脚本都会错误,重装也没用
- ¥15 霍利韦尔软件web station N4的安装密码忘记了能找回吗
- ¥20 帮电子新生画个仿真图吧🥰
- ¥20 基于STM32F407设计一个贪食蛇游戏,要求:1有开始 、结束界面,能进行游戏设置,如:界面颜色,蛇移动速度。2蛇体能上下左右移动且在界面能随机生成食物,蛇吃后会变长;3小蛇碰壁死亡,显示游戏结束。
- ¥15 摁摁钮(接P3.4口)无法实现点阵管播放速度调节,大家能帮我看看是什么问题吗?TAT
- ¥30 小型网络防火墙mstp.vrrp.ospf配置
- ¥15 grafna发送告警信息
- ¥15 51单片机,LCD屏幕内容修改
- ¥20 Ida Pro动态调试
- ¥15 TensorFlow深度学习拓展项目