上同调函子 2018-06-08 02:43 采纳率: 0%
浏览 4736
已采纳

关于c++ break语句跳出几层循环的问题

我在一个双层循环的里层用break
图片说明
网上说的是只跳出里层循环,所以应该显示十层呀,可是结果却只有一个,好像break直接跳出了外层循环。
更奇怪的是,计算着一层用了一分多钟,貌似把里层的5050个循环也都循环了
图片说明
如果把里层循环去掉,结果是十个结果,计算的非常快
图片说明
图片说明
PS:里层循环把i改了还是不行
图片说明结果还是那样的

  • 写回答

17条回答 默认 最新

  • xbbguai 2018-06-08 02:51
    关注

    内层循环控制变量和外层控制变量是同一个i。跳出内层循环后,外层循环的条件有可能已经不存在(要求i < 10)。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • galliumh 2018-06-08 03:02
    关注

    里层循环使用外层循环变量,break不使用标签只能跳出当前循环在语法上是必然的,至于外层循环也结束则是满足了结束条件而非break。只需要将里层循环的变量改为新变量即可验证

    评论
  • abcdefzhw 2018-06-08 02:50
    关注

    break 跳出当前循环,跳出里层的循环

    评论
  • xbbguai 2018-06-08 02:52
    关注

    补充:将内层循环改成: for (int n = 0; n < 5050; n++) .... 试试

    评论
  • Fatal Error 2018-06-08 02:53
    关注

    内层循环变量改一个试试,换成 int j = 0; j < 5050; j++. 你两层都用了 i,外层很容易跳出来。

    评论
  • qq_24872853 2018-06-08 02:56
    关注

    break的时候看下i是几,然后往下走一步,你就知道为什么连外层循环也break了(因为这时候判断i已经大于10了,所以外层也就不再循环了)

    评论
  • galliumh 2018-06-08 03:12
    关注

    改了里层循环的变量还是跳出外层循环,建议debug,或者精简里层循环逻辑,比如去掉里层循环的函数调用,将跳出判断逻辑改一些(必须里层循环10次)

    评论
  • VIVIAN_WO 2018-06-08 03:14
    关注

    你在外层循环,最下面输出 一句话,看看会不会执行,会执行,就是跳出里面循环

    评论
  • 钟晚tk 2018-06-08 03:56
    关注

    break在某种程度上终止FOR循环,在这之前循环不会跳出循环范围

    评论
  • xbbguai 2018-06-08 05:31
    关注

    内层的break条件是ifgoto()的结果为0. 你应当在调试环境里跑一跑看,如果ifgoto()从来就没返回过0,内层每次都要循环5050次。
    当你把内层循环控制变量名改为i以外的变量之后, 一定不会在发生你认为的break既跳出内层循环又跳出外层循环的问题。

    另外,i是只在for里起作用,但这句话应当理解为:如果在for语句里直接定义循环控制变量,循环控制变量i的作用域范围为for语句内,也就是包括了循环体。
    强烈建议你使用debugger跟踪整个循环执行过程,学好for循环的内在原理。

    评论
  • 韩小布 2018-06-08 05:58
    关注

    内层的break条件是ifgoto()的结果为0. 你应当在调试环境里跑一跑看,如果ifgoto()从来就没返回过0,内层每次都要循环5050次。
    当你把内层循环控制变量名改为i以外的变量之后, 一定不会在发生你认为的break既跳出内层循环又跳出外层循环的问题。

    另外,i是只在for里起作用,但这句话应当理解为:如果在for语句里直接定义循环控制变量,循环控制变量i的作用域范围为for语句内,也就是包括了循环体。
    强烈建议你使用debugger跟踪整个循环执行过程,学好for循环的内在原理。

    评论
  • xueyajiang 2018-06-08 06:26
    关注

    其实很简单,如果你想看到底哪里错了。可以编译成汇编代码,就看的比较清楚了.

    评论
  • hbigtwo 2018-06-08 06:37
    关注

    两个内部变量同名,应该使用静态变量

    评论
  • _肆 2018-06-08 06:53
    关注

    你这个int i的地方在外for里,所以外for里的i都是一个i,第一种你执行的时候,可能i在内for已经超过10了,这时候跳出内for,外for再判定i<10判定失败,跳出大for所以你把内for里换了另一个变量,执行的结果是咋样的,你说还是不对我们也不知道你要求的是咋样的,毕竟你这个代码不全

    评论
  • asadgfjlka 2018-06-08 07:07
    关注

    将跳出判断逻辑改一些

    评论
  • haifanyuntian 2018-06-08 09:46
    关注

    break退出当前循环,但不会跳出被包含的所有循环。
    两个循环的循环变量是一样的,退出最里面的循环后不满足外面的循环所以打印一组数据就退出,建议修改变量加上打印试试

    评论
  • fnlaivhafgaah 2018-06-08 15:31
    关注

    里循环和外循环的循环条件的变量换一下

    评论
查看更多回答(16条)

报告相同问题?

悬赏问题

  • ¥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深度学习拓展项目