编程技术文章分享与教程

网站首页 > 技术文章 正文

你知道循环里Continue/Break/Return作用?

hmc789 2024-11-27 14:48:43 技术文章 2 ℃

前言

循环里Continue,Break,Return经常会用到,也是很容易出错的一个坑,今天特地花个时间来总结下,在循环里使用Continue,Break,Return的不同效果是什么?

Continue 语句

涵义

C 语言中的 continue 语句有点像 break 语句,所不同的是,它不是强制终止,continue 会跳过当前循环中的代码,强迫开始下一次循环迭代。

对于 for 循环,continue 语句执行后,自增语句仍然会执行

对于 while 和 do…while 循环,continue 语句重新执行条件判断语句

语法

流程图

实例

多层 for 循环实例如下:

#include <stdio.h>int main (){    int i=0,j=0;    for (i = 0; i < 4; i++ )    {        printf("i 的值: %d\n",i);        for (j = 0; j < 3; j++ )        {            if( j==1){                continue;            }            printf("j 的值: %d\n",j);        }    }   return 0;}

编译结果如下,我们可以得出结论,在双层FOR循环中,在内循环使用Continue,只会在内循环中跳过此处循环,小循环继续执行,不会跳过大循环。

我们再举一个while循环的例子如下:

#include <stdio.h>int main (){   int a = 0;   do   {      if( a == 5)      {         /@@* 跳过迭代 */         a = a + 1;         continue;      }      printf("a 的值: %d\n", a);      a++;   }while( a < 10 );   return 0;}

输出如下:

Break 语句

在循环中,关键词Break,作用是跳出循环,一般有以下两种用法:

  1. 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
  2. 它可用于终止 switch 语句中的一个 case。

如果使用的是嵌套循环,break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。

注意:

  1. break语句对if-else的条件语句不起作用。
  2. 在多层循环中,一个break语句只向外跳一层。
  3. 由于它是用来退出循环或者switch语句的, 所以只有当它出现在这些语句的时候, 这种形式的break语句才是合法的。

语法

流程图

实例

如下:

#include <stdio.h>int main (){    int i=0,j=0;    for (i = 0; i < 4; i++ )    {        printf("i 的值: %d\n",i);        for (j = 0; j < 3; j++ )        {            if( j==1){                break;            }            printf("j 的值: %d\n",j);        }        printf("\n");    }   return 0;}

编译结果如下,我们可以看到在双层FOR循环中,在内循环使用Break,只会在内循环中结束本次循环,小循环结束此次执行,不会跳过大循环。

我们再举一个while循环的例子如下:

#include <stdio.h>int main (){   int a = 0;   do   {      printf("a 的值:%d\n" , a );       a = a + 1;       if( a > 5)       {          // 终止循环          break;       }   }while( a < 10 );   return 0;}

输出如下:

Return

在循环中,Return语句,作用是结束本次循环,将函数调用栈弹栈,恢复现场。

说的简单点儿就是结束当前的函数,返回函数执行结果,回到本函数被调用处继续执行。

我们举个例子如下:

#include <stdio.h>int main (){    int i=0,j=0;    for (i = 0; i < 4; i++ )    {        printf("i 的值: %d\n",i);        for (j = 0; j < 3; j++ )        {            if( j==1){                return;            }            printf("j 的值: %d\n",j);        }    }   return 0;}

输出如下:

提问思考?

不知道大对上面的解释有没有理解清楚,这里提出3个问题,如果一看即知道答案,那么肯定没有问题了。

  1. 同样是跳出循环,return和break有什么区别?
  2. 同样是中断执行,return和return false有什么区别?
  3. 在什么应用场景下我们会用到break或continue?
标签列表
最新留言