鱼C论坛

 找回密码
 立即注册
查看: 2570|回复: 8

[技术交流] break&continue

 关闭 [复制链接]
抢楼 抢楼 查看抢中楼层 本帖为抢楼帖,欢迎抢楼!  奖励楼层: 1,2,3,4,5,6,7,8,9,10 
发表于 2015-8-17 14:45:52 | 显示全部楼层 |阅读模式
50鱼币
请问各位,以下代码的break算是跳到哪一层?

  1. #include <stdio.h>
  2. void main()
  3. {
  4.    for(int i=0;i<200;i++)
  5.      {
  6.                 for(int x=0;x<i;x++)
  7.                 {
  8.                          if(x==5 && i==0) break;
  9.                 }
  10.      }
  11. }
复制代码

最佳答案

查看完整内容

#include void main() { for(int i=0;i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-17 14:45:53 | 显示全部楼层
本帖最后由 醉酒青牛 于 2015-8-17 16:26 编辑

#include <stdio.h>
void main()
{
   for(int i=0;i<200;i++)       //第一层循环
     {
                for(int x=0;x<i;x++)      //第二层循环
                {
                         if(x==5 && i==0) break;
                }
     }
}
break语句在第二层循环体内,执行break后将跳出所在的循环体,即第二层循环,进入到第一层循环体内
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-8-17 14:46:22 | 显示全部楼层
大家快来回答呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-17 15:08:57 | 显示全部楼层
同学 多看看基础的东西
1. break一次只跳一层
2. if 无视break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-17 15:25:57 | 显示全部楼层
break会跳出离他最近的一层循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-17 16:27:36 | 显示全部楼层
楼主,如果觉得回答还满意的话,记得赏俺鱼币哦:loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-18 15:12:29 | 显示全部楼层
//break是结束一个层的整个循环体,continue是结束一层循环的单次循环

比方说:

while(x++ < 10)
{
    if(x == 3)
    {
        break;
    }
    printf("%d\r\n", x);
}
结果是输出  1 2   就退出了整个while循环

但是如果使用continue
while(x++ < 10)
{
    if(x == 3)
    {
        continue;
    }
    printf("%d\r\n", x);
}
结果是:1 2 4 5 6 7 8 9 10  可见他仅仅是不输出3,因为他结束了本次循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-18 21:05:37 | 显示全部楼层
你的代码不会有任何执行break语句,因为当 i==0 时绝不会出现 x==5,
你可以将 x==5 && i==0 改写成 (x==5 || i==0) 跳出的是变量为 x 的那一层。可以用如下代码做个测试。
  1. #include <stdio.h>
  2. void main()
  3. {
  4.     int i;
  5.     int x;
  6.     for(i=0;i<200;i++)
  7.     {
  8.             for( x=0;x<i;x++)
  9.             {
  10.                 if(x==5 || i==0) {
  11.                     printf("In x:now i=%d,x=%d\n",i,x);
  12.                     break;
  13.                 }
  14.             }
  15.     }
  16. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-8-19 10:02:44 | 显示全部楼层

非常好,感谢你的建议!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 16:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表