分支循环语句(下)

1. 前言

今天我们继续上期的分支循环语句,来聊聊循环语句中breakcontinue这两大“门将”。

2.break和continue语句

   在 循环执⾏的过程中 ,如果某些状况发⽣的时候 需要提前终⽌循环 ,这是⾮常常见的现象。C语⾔中提供了 break continue 两个关键字 ,来帮我们实现这一需求
break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执行。
continue 的作用是 跳过本次循环 continue 后边的代码 ,在 for 循环和 while 循环中有所差异

    下面我们从实例中具体感受下。

3.while循环中的break和continue

3.1break举例

#include <stdio.h>
int main()
{
 int i = 1;
 while(i<=10)
 {
 if(i == 5)
 break;//当i等于5时,执行break语句,直接跳出while循环
 printf("%d ", i);
 i = i+1;
 }
 return 0;
}

打印了1,2,3,4后,当i等于5的时候,if语句控制的break语句执行,直接跳出while循环,不再打印5及其后面的数字。所以 b reak 的作用就是永久终⽌循环 ,只要 break 被执行, break 外的第⼀层循环就终⽌了(即break语句只能跳出 它所在的最近的一层循环 。所以后我们在循环中,想在某种条件下终⽌循环,则可以使用break 来达到我们想要的效果。

3.2continue举例

continue 是在英语中是继续的意思,在循环中的作用就是 跳过本次循环中 continue 后边的代码,继续进行下⼀次循环的判断 。 如果将上面的代码中的break换成continue,又将产生怎样的效果呢?
#include <stdio.h>
int main()
{
 int i = 1;
 while(i<=10)
 {
 if(i == 5)
 continue;
 //当i等于5时,执⾏continue,直接跳过此时continue后面的代码,进入while循环的判断部分
 printf("%d ", i);
 i = i+1;
 }
 return 0;
}

   因为这里的continue跳过了while循环的调整部分(i = i+1),所以i一直等于5,程序陷⼊死循 环。到这⾥我们就能分析出来, continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进行下⼀次循环的判断,如果循环的调整部分是在 continue 后边的话,可能会造成死循环。

4.for循环中的break和continue

4.1break举例

其实 和 while 循环中的 break ⼀样 ,for 循环中的 break 也是⽤于终止循环的,不管循环还需
要进行多少次, 只要执行到了 break ,循环就彻底终止 ,我们上代码。
#include <stdio.h>
int main()
{
 int i = 1;
 for(i=1; i<=10; i++)
 {
 if(i == 5)
 break;
 printf("%d ", i);
 }
 return 0;
}

break 的作用是永久终止循环,未来我们在某个条件发⽣的时候,不想再继续循环的时候,就可以 使用 break来实现。

4.2continue举例

   与break语句不同,for循环中的continue与while循环中的还是有一些出入的,下面我们通过代码来具体观察下。

#include <stdio.h>
int main()
{
 int i = 1;
 for(i=1; i<=10; i++)
 {
 if(i == 5)
 continue;//这⾥continue跳过了后边的代码,来到了for循环的调整部分(i++)
 printf("%d ", i);
 }
 return 0;
}

 

所以在 for 循环中 continue 的作⽤是跳过本次循环中 continue 后的代码 直接去到循环的调
整部分 未来当某个条件发生的时候,本次循环⽆需再执⾏后续某些操作的时候,就可以使⽤
continue 来实现。

 

  对比while和for循环中运用continue语句后代码的执行流程及其运行结果,我们不难发现,产生产生差异的主要原因是while循环中的continue跳过了其调整部分而for循环由于其调整部分分布在循环体外,从而使得continue无法跳过其调整部分所导致的。

    5.do while 循环中的break和continue

5.1break举例

#include <stdio.h>
int main()
{
 int i = 1;
 do
 {
 if(i == 5)
 break;
 printf("%d ", i);
 i = i + 1;
 }while(i<=10);
return 0;
}

 

5.2continue举例

#include <stdio.h>
int main()
{
 int i = 1;
 do
 {
 if(i == 5)
 continue;
 printf("%d ", i);
 i = i + 1;
 }while(i<=10);
return 0;
}

  do while 循环中的break和continue与while循环中的几乎相同,这里就不在赘述 

 6.分支循环番外篇——goto语句

  C语⾔提供了⼀种⾮常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数
内跳转到设置好的标号处。
#include <stdio.h>
int main()
{
 printf("hehe\n");
 goto next;//此时的跳转标号后面是“分号”
 printf("haha\n");
next://此时的跳转标号为“冒号”
 printf("跳过了haha的打印\n"); 
 return 0;
}

  

goto语句如同传送门一样,通常情况下我们的程序只能一行一行地执行,但一旦进入传送门,程序就直接可以到达我们想去的位置。在一些特殊情况下,可以提高程序的运行效率。
for(...)
{
 for(...)
 {
 for(...)
 {
 if(disaster)
 goto error;
 }
 }
}
error:
 //...
  通常来讲多层 for 循环嵌套想要提前退出得使用 break ,而⼀个 break 只能跳出⼀层 for 循环,如果n层循环嵌套就得使用n个break 才能跳出循环,但是在这种情况下我们使用 goto 语句便会直接跳转到标号处,更加快捷
  但goto语句是一把双刃剑, 如果goto 语句如果使用不当,就会导致在函数内部随意跳转,打乱程序的执行流程,所以还是慎用为好!

7.总结 

分支循环语句这一篇章在C语言中有着举足轻重的地位。熟能生巧,这需要我们在平时写代码的过程中不断运用,勇于尝试,概括总结,在今后实现一些程序时时能够信手拈来!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值