打印
[牛人杂谈]

C语言中break和continue的区别

[复制链接]
939|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
643757107|  楼主 | 2016-10-30 19:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.break语句
break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句
一般形式:
               break;
注意:break语句不能用于循环语句和switch语句之外的任何其他语句中。
比如:
unsigned char i, j=50;
for(i=0;i<100;i++)
{
      if(i>j) break;
}
j=i;
当程序循环到i=51时,执行break语句,跳出for循环,开始执行j=i这条语句。
2.continue语句
作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定.
一般形式:
         continue;
比如:
unsigned char i, j=50;
for(i=0;i<100;i++)
{
      if(i>j) continue;
      j=i;
}
当程序循环到i=51时,执行continue语句,结束本次循环,即不执行下面的j=i语句,而是执行i++,即i=52,故i<100,循环的条件成立,循环继续执行,直到i<100的条件不成立,for循环才终止。

沙发
643757107|  楼主 | 2016-10-30 19:38 | 只看该作者
总之:
continue语句只结束本次循环,而不是终止整个循环的执行。

break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
1.continue只结束上一级本次循环,针对只是for  while两大类循环语句。
2.break结束上一级整个循环语句,可以是for while,还可以为swtich.
测试代码如下:
      1 #i nclude    <stdio.h>
      2 #i nclude    <string.h>
      3
      4 int main()
      5 {
      6     char i;
      7     for(i=0;i<5;i++){
      8         switch(i){
      9             case 0: printf("i=%d\n",i);break;
     10             case 1: printf("i=%d\n",i);break;
     11             case 2: printf("i=%d\n",i);break;

     12             case 3: printf("i=%d\n",i);continue;printf("ok\n");
     13             case 4: printf("i=%d\n",i);break;
     14             default: printf("errp\n");
     15         }
     16         printf("abanda\n");
     17     }
     18 }
输出:
i=0
abanda
i=1
abanda
i=2
abanda
i=3
i=4
abanda

使用特权

评论回复
板凳
643757107|  楼主 | 2016-10-30 19:39 | 只看该作者

我对break 和 continue 还是有点搞不清除,今天在看《Thinking in Java》,看到这个,学习了一下。
      break的作用是跳出这个循环(如果这个break或者continue在循环中的if语句里面,不是跳出if语句,而是跳出循环语句),执行这个循环 的大括号以后的语句,break在循环语句中是这样,在switch语句用功能也是这样的,而continue是当条件满足的时候不执行这个循环后面的语 句,从这个循环的开始重新执行。
      以下代码是书本中的范例,我改了一下,运行了一下,终于明白了。
               for(int i=0;i<20;i++)

               {
                      if(i==14) break;
                      if(i%9==0) continue;
                      printf("%d",i);
               }
               int i=0;
               while(true)

              {
                     i++;
                     int j=i*27;
                     if(j==1269)

                     break;
                     if(i%10!=0)

                     continue;
                     printf("%d",i);
               }
      运行的结果如下: 1 2 3 4 5 6 7 8 10 11 12 13 10 20 30 40
      在上面的for语句中,如果出现14就跳出本次循环,继续下面的while循环,在前面的14个数中(从0开始),只有9%9==0,所以当i==9的时候,continue了一下,就没有输出"9"了。后面的while也是同一个道理。
      通过一个程序发现break 和 continue也并不怎么难,通过例子应该更好理解一点。

      总之break就是退出最近的for或者while循环。。。就算是for或者while里面的if里面的break也是一样。。。

使用特权

评论回复
地板
heisexingqisi| | 2016-10-30 20:23 | 只看该作者
一个彻底跳出循环,一个是结束本轮,提前进入下一轮。。

使用特权

评论回复
5
heisexingqisi| | 2016-10-30 20:23 | 只看该作者
结束本轮就是,后面的代码不执行了。。。其实可以用个if语句跳过的。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

209

主题

3772

帖子

11

粉丝