听说这是目录欸
1.循环家族
1.1 while循环
语法形式
1 while(表达式)
2 语句;
首先上来就是执行判断表达式,表达式的值为0【假】,循环直接结束;表达式的值不为0【真】,则执行循环语句,语句执行完后再继续判断,是否进行下一次判断。while循环条件将会比循环体多执行一次。
循环流程:先判断,后执行(类似 if )
❤️循环流程理解
第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 语句就会更加的快捷。