C语言break和continue的用法(非常详细)
break
和 continue
是 C 语言中两个非常重要的流程控制语句,它们用于改变循环或条件语句的执行流程。
学习 break 和 continue 之前,相信读者已经掌握了 C 语言中 while、do-while 和 for 循环语句的用法。break 和 continue 的主要作用是在循环中控制代码的跳转。简单来说:
-
break
用于“跳出”整个循环; -
continue
用于“跳过”当前循环的剩余部分,直接进入下一次循环。
本教程将从定义、用法、实际案例以及注意事项等方面,详细讲解 break 和 continue。
C语言break语句
break
语句的作用是立即终止当前所在的循环或 switch
语句,并将程序控制权转移到循环或 switch
之后的下一条语句。
break
语句的语法格式如下:
break;
是的,就是这么简单!break
是一个单独的关键字,后面直接跟分号,不需要任何参数。
break
通常出现在以下结构中:
-
for
循环; -
while
循环; -
do-while
循环; -
switch
语句。
在循环中,break
会直接跳出整个循环;在 switch
中,它会跳出整个 switch
块,避免后续 case
的执行。
让我们通过一个例子来看看 break
的实际效果。假设我们要找出一个数组中第一个大于 10 的数字,并立即停止搜索。
#include <stdio.h> int main() { int arr[] = {5, 8, 12, 15, 20}; int i; for (i = 0; i < 5; i++) { if (arr[i] > 10) { printf("找到第一个大于 10 的数:%d\n", arr[i]); break; // 找到后立即退出循环 } printf("当前数字:%d\n", arr[i]); } printf("循环结束\n"); return 0; }
输出结果:
当前数字:5 当前数字:8 找到第一个大于 10 的数:12 循环结束
在这个例子中,当程序发现 arr[2]
(值为 12)大于 10 时,break
立刻终止了 for
循环,后续的 15 和 20 不再被检查。这就是 break
的“跳出”效果。
注意事项
-
break
只跳出它所在的“最近一层”循环。如果有嵌套循环,break
不会影响外层循环。 -
在
switch
中,如果忘记写break
,会导致“贯穿”问题,后续case
会被依次执行(除非这是你想要的效果)。
C语言continue语句
continue
语句的作用是跳过当前循环的剩余代码,直接进入下一次循环。
和 break
不同,它不会终止整个循环,而是“继续”执行下一次迭代。它的典型用途是过滤掉某些不符合条件的循环次数。
continue 语句的语法格式如下:
continue;
和 break
一样,continue
也是一个单独的关键字,后面直接跟分号。
continue
适用于以下循环结构:
-
for
循环; -
while
循环; -
do-while
循环;
需要注意的是,continue
不用于 switch
语句,因为它的设计初衷是针对循环。
假设我们要打印 1 到 10 中所有的奇数,跳过偶数,就可以用 continue
来实现。
#include <stdio.h> int main() { int i; for (i = 1; i <= 10; i++) { if (i % 2 == 0) { // 如果是偶数 continue; // 跳过本次循环 } printf("%d 是奇数\n", i); } return 0; }
输出结果:
1 是奇数 3 是奇数 5 是奇数 7 是奇数 9 是奇数
在这个例子中,当 i
是偶数时,continue
会跳过 printf
语句,直接进入下一次循环(i
自增后继续判断)。因此,只有奇数会被打印。
注意事项
-
在
for
循环中,continue
会直接跳到“更新表达式”(如i++
),然后再判断条件。 -
在
while
或do-while
中,continue
会跳到条件判断部分,注意避免死循环。
break和continue的对比
为了更直观地理解两者的区别,我们可以用一个表格来总结:
特性 |
break |
continue |
---|---|---|
作用 | 终止整个循环 | 跳过当前循环的剩余部分 |
适用范围 |
循环和 switch |
仅循环 |
执行后跳转位置 |
循环或 switch 后的语句 |
下一次循环的开始 |
综合示例
让我们通过一个更复杂的例子,看看如何同时使用 break
和 continue
。
假设我们要从 1 到 20 中打印所有不是 3 的倍数的数字,但如果遇到 15,就提前结束循环。
#include <stdio.h> int main() { int i; for (i = 1; i <= 20; i++) { if (i == 15) { printf("遇到 15,提前结束\n"); break; } if (i % 3 == 0) { continue; // 跳过 3 的倍数 } printf("%d\n", i); } return 0; }
输出结果:
1 2 4 5 7 8 10 11 13 14 遇到 15,提前结束
在这个例子中,continue
跳过了 3、6、9、12 等数字,而 break
在 i
达到 15 时终止了整个循环。
总结
break
和 continue
是 C语言里常用的循环控制语句,能够灵活地控制循环的执行流程。
阅读完本文,相信你已经掌握了 break
和 continue
的用法。建议你在实际编程中多加练习,比如尝试用 break
实现查找功能,或用 continue
过滤数据,真正将知识转化为技能。