C语言中continue和break有何区别?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 C语言 正文

break 语句

break 的核心意思是“跳出”或“中断”。

c语言continue和break
(图片来源网络,侵删)

主要用途

break 语句主要有两个用途:

a) 在 switch 语句中 这是 break 最常见的用途,当 switch 表达式的某个 case 匹配成功后,程序会执行该 case 后的所有代码,直到遇到 breakswitch 语句块结束。break 用于终止 switch 的执行,防止“case 穿透”(fall-through)。

#include <stdio.h>
int main() {
    int day = 3;
    switch (day) {
        case 1:
            printf("星期一\n");
            break; // 如果没有 break,会继续执行 case 2
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break; // 遇到 break,switch 语句执行完毕
        default:
            printf("其他天\n");
    }
    return 0;
}
// 输出: 星期三

b) 在循环语句中(for, while, do-while 在循环内部,一旦执行到 break,会立即终止整个循环的执行,程序流程会跳转到循环语句的下一条语句继续执行。

#include <stdio.h>
int main() {
    for (int i = 1; i <= 10; i++) {
        printf("i = %d\n", i);
        // 当 i 等于 5 时,跳出整个 for 循环
        if (i == 5) {
            break;
        }
    }
    printf("循环已结束,\n");
    return 0;
}
/* 输出:
i = 1
i = 2
i = 3
i = 4
i = 5
循环已结束。
*/

break 的特点总结

  • 作用范围break 只能用于 switch 语句和三种循环语句(for, while, do-while)的内部。
  • 行为立即终止并退出它所在的 switch 或循环。
  • 跳转目标:跳转到 switch 或循环语句块的下一条语句。

continue 语句

continue 的核心意思是“跳过本次”或“继续下一次”。

c语言continue和break
(图片来源网络,侵删)

主要用途

continue 语句只用于循环语句for, while, do-while)中。

当循环体内部执行到 continue 时,会发生以下事情:

  1. 立即终止**本次循环**的剩余代码。
  2. 直接进入下一次循环的判断条件(对于 for 循环,还会先执行 forincrement 部分)。

重要区别break 是跳出整个循环,而 continue 是跳过剩下的本次循环代码,继续下一次循环。

示例

a) 在 for 循环中

c语言continue和break
(图片来源网络,侵删)
#include <stdio.h>
int main() {
    for (int i = 1; i <= 10; i++) {
        // i 是偶数,就跳过本次循环的剩余部分
        if (i % 2 == 0) {
            continue; // 跳转到 for 循环的 i++ 部分
        }
        // 只有当 i 是奇数时,这行代码才会被执行
        printf("i = %d (奇数)\n", i);
    }
    printf("循环已结束,\n");
    return 0;
}
/* 输出:
i = 1 (奇数)
i = 3 (奇数)
i = 5 (奇数)
i = 7 (奇数)
i = 9 (奇数)
循环已结束。
*/

b) 在 while 循环中

#include <stdio.h>
int main() {
    int i = 0;
    while (i < 5) {
        i++; // 注意:在 while 循环中,continue 前要确保 i 能递增,否则可能死循环
        if (i == 3) {
            continue; // 跳过本次循环剩余代码,直接进入 while (i < 5) 的判断
        }
        printf("i = %d\n", i);
    }
    printf("循环已结束,\n");
    return 0;
}
/* 输出:
i = 1
i = 2
i = 4
i = 5
循环已结束。
*/

continue 的特点总结

  • 作用范围continue 只能用于循环语句for, while, do-while)的内部,不能用于 switch
  • 行为跳过本次循环的剩余代码,直接进入下一次循环的迭代。
  • 跳转目标:对于 for 循环,跳转到 increment 部分;对于 while/do-while 循环,跳转到循环条件判断部分。

核心区别与对比

特性 break continue
中文含义 跳出、中断 跳过、继续
作用范围 switch 语句、循环语句 仅循环语句
行为 终止并退出整个循环或 switch 跳过本次循环的剩余代码,继续下一次循环
对循环的影响 循环完全结束 循环继续执行,只是当前次被提前终止
形象比喻 叫停比赛”,比赛结束。 本轮弃权”,下一轮继续比赛。

一个容易混淆的陷阱:break vs continue

让我们看一个例子来加深理解。

#include <stdio.h>
int main() {
    printf("--- 使用 break 的例子 ---\n");
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            break; // 当 i=3 时,整个循环结束
        }
        printf("break: i = %d\n", i);
    }
    printf("\n--- 使用 continue 的例子 ---\n");
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            continue; // 当 i=3 时,跳过 printf,但循环继续
        }
        printf("continue: i = %d\n", i);
    }
    return 0;
}

输出结果:

--- 使用 break 的例子 ---
break: i = 1
break: i = 2
--- 使用 continue 的例子 ---
continue: i = 1
continue: i = 2
continue: i = 4
continue: i = 5

通过对比输出,可以非常清晰地看到两者的区别。


何时使用?

  • 使用 break 的情况:

    • 当你找到一个目标后,不需要再循环了,在一个数组中查找一个特定数字,找到后就可以立即退出循环。
    • 当某个条件发生时,程序状态已经无效或错误,需要立即终止循环。
  • 使用 continue 的情况:

    • 当你想要跳过某些不符合条件的元素,处理其余元素时,遍历一个列表,只处理奇数或只处理非空字符串。
    • 当你遇到一个无效数据或错误输入时,不希望它影响后续数据的处理,于是跳过它。

记住这两个核心要点:

  1. break = Exit (退出):它让你彻底离开一个循环或 switch 结构。
  2. continue = Skip (跳过):它让你只跳过当前循环的剩余部分,然后进行下一次迭代。

理解并正确使用它们,是写出高效、清晰逻辑代码的关键一步。

-- 展开阅读全文 --
头像
织梦picname如何更换图片?
« 上一篇 今天
织梦index.html为何删不掉?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]