一.break和countinue语句;
在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C语⾔中提供了 break 和 continue 两个关键字,就是应该到循环中的。
break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执
⾏。
continue 的作⽤是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所
差异的。
下面我们来介绍每一种循环中,break和continue的不同用法和区别;
1.1.while循环中的break,continue;
在while循环中,循环过程中碰到break,则会跳出这一层循环;
#include<stdio.h> int main() { int a=5; while (a >= 5) { if (a == 7) { break; } printf("%d\n", a); a++; } return 0; }
这里我们可以看到当执行到break的时候我们的程序就结束了运行,如果没有break跳出循环,这里将会一直打印5以上的数字;
所以 break 的作⽤就是永久的终⽌循环,只要 break 被执⾏, break 外的第⼀层循环就终⽌了。那以后我们在循环中,想在某种条件下终⽌循环,则可以使⽤ break 来完成我们想要的效果。
我们把代码中的break替换成continue:
#include<stdio.h> int main() { int a=5; while (a >= 5) { if (a == 7) { continue; } printf("%d\n", a); a++; } return 0; }
这里我们可以看到,编译运行程序之后貌似程序并没有结束运行,而是光标停留在了下一行;
到这⾥我们就能分析出来, continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接跳到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环。
1.2.for循环中的break和continue;
break举例:
int main() { int num; for (num = 1; num <= 100; num++) { if (num == 20) { break; } printf("%d ", num); } return 0; }
break 的作⽤是永久的终⽌循环,未来我们在某个条件发⽣的时候,不想再继续循环的时候,就可以使⽤ break 来完成。
continue举例:
int main() { int num; for (num = 1; num <= 100; num++) { if (num == 20) { continue; } printf("%d ", num); } return 0; }
所以在 for 循环中 continue 的作⽤是跳过本次循环中 continue 后的代码,直接去到循环的调
整部分。未来当某个条件发⽣的时候,本次循环⽆需再执⾏后续某些操作的时候,就可以使⽤continue 来实现。我们这里可以对比一下continue在for循环和while循环的区别:
1.3.do while语句的break和continue语句;
break举例:
#include <stdio.h> int main() { int i = 1; do { if (i == 5) break; printf("%d ", i); i = i + 1; } while (i <= 10); return 0; }
continue举例:
#include <stdio.h> int main() { int i = 1; do { if (i == 5) continue; printf("%d ", i); i = i + 1; } while (i <= 10); return 0; }
我们可以发现用法其实跟while的用法是一样的;
注意:break和continue的使用范围只能在一个循环体内生效。
二.goto语句;
goto 语句可以实现在同一个函数内跳转到设置好的标号处。我们可以理解为goto语句能把我们传送到我们想要到的位置。
#include <stdio.h>
int main()
{
printf("hehe\n");
goto next;
printf("haha\n");
next:
printf("跳过了haha的打印\n");
return 0;
}
输出的结果是:
前面我们提到了,当我们想让快速跳出一个循环可以用break,但是如果有多个循环的话就要使用多个break来达到快速跳出所以循环的效果,这个时候我们可以使用goto语句来快速跳出所有循环。
for (...) { for (...) { for (...) { if (disaster) goto error; } } error: