Michael-Bern 发表于 2015-8-17 14:45:52

break&continue

请问各位,以下代码的break算是跳到哪一层?

#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;
                }
   }
}

醉酒青牛 发表于 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后将跳出所在的循环体,即第二层循环,进入到第一层循环体内

Michael-Bern 发表于 2015-8-17 14:46:22

大家快来回答呀

ryxcaixia 发表于 2015-8-17 15:08:57

同学 多看看基础的东西
1. break一次只跳一层
2. if 无视break

那年 发表于 2015-8-17 15:25:57

break会跳出离他最近的一层循环

醉酒青牛 发表于 2015-8-17 16:27:36

楼主,如果觉得回答还满意的话,记得赏俺鱼币哦:loveliness:

2678779742 发表于 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,因为他结束了本次循环

430524tian 发表于 2015-8-18 21:05:37

你的代码不会有任何执行break语句,因为当 i==0 时绝不会出现 x==5,
你可以将 x==5 && i==0 改写成 (x==5 || i==0) 跳出的是变量为 x 的那一层。可以用如下代码做个测试。
#include <stdio.h>
void main()
{
    int i;
    int x;
    for(i=0;i<200;i++)
    {
            for( x=0;x<i;x++)
            {
                if(x==5 || i==0) {
                  printf("In x:now i=%d,x=%d\n",i,x);
                  break;
                }
            }
    }
}

Michael-Bern 发表于 2015-8-19 10:02:44

醉酒青牛 发表于 2015-8-17 14:45
#include
void main()
{


非常好,感谢你的建议!
页: [1]
查看完整版本: break&continue