遇见•分支和循环(二)

本文详细介绍了C语言中while、for、do-while三种循环结构的区别,以及break、continue语句的使用和它们在循环控制中的作用。同时提到了goto语句的特性和在复杂循环中的应用,强调了合理使用的重要性。
摘要由CSDN通过智能技术生成

1.循环家族

1.1 while循环

语法形式

 1 while(表达式)
 2       语句;

首先上来就是执行判断表达式,表达式的值为0【假】,循环直接结束;表达式的值不为0【真】,则执行循环语句,语句执行完后再继续判断,是否进行下一次判断。while循环条件将会比循环体多执行一次。
循环流程:先判断,后执行(类似 if )
❤️循环流程理解
第n次循环:

Created with Raphaël 2.3.0 第n次判断表达式 执行语句或者不执行

1.2 for循环

语法形式

 1 for(表达式1; 表达式2; 表达式3)
 2     语句;

表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整

首先执行 表达式1 初始化循环变量,接下来就是执行 表达式2 的判断部分, 表达式2 的结果如果==0【假】,则循环结束; 表达式2 的结果如果!=0【真】则执行循环语句,循环语句执行完后,再去执行表达式3 ,调整循环变量,然后再去表达式2 的地方执行判断, 表达式2 的结果是否为0,决定循环是否继续。

❤️循环流程理解



整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。

1.3 do-while循环

语法形式

 1 do
 2   语句;
 3 while(表达式);

在do while 循环中先执行代码上的 “语句” ,执行完语句 ,再去执行 “表达式” ,判断 “表达式” 的结果是!=0【真】,则继续循环,执行循环语句;判断 “表达式” 的结果==0【假】,则循环结束。
备注:一般do while 使用在循环体至少被执行一次的场景下,所以使用较少一些。

❤️循环流程理解

语句
判断
跳出循环

1.4 while, for, do-while的比较

while 和for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;而 do while 循环则是先直接进入循环体,执行循环语句,然后再执行 while 后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环。【即 do-while循环至少执行1次】

2.跳出循环

2.1 break语句

作用:break 的作用是用于永久的终止循环,只要break 被执行,直接就会跳出循环,继续往后执行。
注意:一个break 只能跳出一层for 循环。

2.2 continue语句

作用:continue 是继续的意思,作用是跳过本次循环中continue 后边的代码。

2.3 while, for, do-while的continue比较

break在这三者中都一样,因此只比较continue。

  • while里的continue
    跳过某一次循环continue 后边的代码,直接到循环的判断部分,进行下一次循环的判断,如果循环的调整是在continue 后边的话,可能会造成死循环。

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

  • do-while里的continue
    作用和while 循环中一样,跳到判断部分。

2.4 goto语句

C语言提供了一种非常特别的语法,就是goto 语句和跳转标号, goto 语句可以实现在同一个函数内跳转到设置好的标号处。

例如:

 1 #include <stdio.h>
 2 int main()
 3 {
 4     printf("2024新年快乐呀!\n");
 5     goto next;
 6     printf("sad\n");
 7 next:
 8    printf("跳过了sad的打印\n");
 9     return 0;
10 }

运行结果:

 祝大家新年快乐,万事顺意!❤️
缺点:goto 语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以建议是能不用尽量不去使用。
优点:在多层循环的代码中,如果想快速跳出,使用 goto 就非常的方便。

例如:

 1 for(...)
 2 {
 3    for(...)
 4    {
 5        for(...)
 6        {
 7            if(disaster)
 8              goto error;        
 9        }
10    }
11 }
12 error:
13    ...

本来for 循环想提前退出得使用 break ,一个break 只能跳出一层for 循环,如果3层循环嵌套就得使用3个break 才能跳出循环,所以在这种情况下我们使用 goto 语句就会更加的快捷。

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值