C语言中continue具体作用是什么?

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

一句话总结

continue 语句的作用是立即终止当前这次循环的剩余部分,并直接跳转到下一次循环的开始处执行。

c语言continue作用
(图片来源网络,侵删)

跳过本次循环剩下的代码,直接进入下一次循环”。


工作原理详解

continue 只能用在循环语句(for, while, do-while)中,它不是一个 breakbreak 会直接跳出整个循环,而 continue 只是“忽略”掉循环体中 continue 语句之后的所有代码。

for 循环中

for 循环中,当执行到 continue 时,程序会:

  1. 立即跳过 continue 之后的所有语句。
  2. 直接执行 for 循环的 迭代语句(通常是 i++ 或 )。
  3. 然后执行 条件判断
  4. 如果条件为真,则开始下一次循环;如果为假,则循环结束。

示例代码:

#include <stdio.h>
int main() {
    for (int i = 1; i <= 10; i++) {
        // i 是 3 的倍数,就跳过本次循环的剩余部分
        if (i % 3 == 0) {
            printf("跳过数字 %d\n", i);
            continue; // 跳转到 for 循环的 i++ 部分
        }
        // 这部分代码在 i 是 3 的倍数时不会被执行
        printf("当前数字是: %d\n", i);
    }
    return 0;
}

执行结果:

当前数字是: 1
当前数字是: 2
跳过数字 3
当前数字是: 4
当前数字是: 5
跳过数字 6
当前数字是: 7
当前数字是: 8
跳过数字 9
当前数字是: 10

分析:i 的值为 3, 6, 9 时,if 条件成立,continue 被执行,程序立即跳过了 printf("当前数字是: %d\n", i); 这一行,直接执行 i++,然后进行下一次循环判断。

while 循环中

while 循环中,当执行到 continue 时,程序会:

  1. 立即跳过 continue 之后的所有语句。
  2. 直接跳转到 while 的条件判断部分
  3. 如果条件为真,则开始下一次循环;如果为假,则循环结束。

示例代码:

#include <stdio.h>
int main() {
    int i = 0;
    while (i < 5) {
        i++; // 必须在 continue 之前更新,否则可能陷入死循环
        if (i == 3) {
            printf("跳过数字 %d\n", i);
            continue; // 跳转到 while (i < 5) 的条件判断部分
        }
        printf("当前数字是: %d\n", i);
    }
    return 0;
}

执行结果:

当前数字是: 1
当前数字是: 2
跳过数字 3
当前数字是: 4
当前数字是: 5

⚠️ 重要提示:whiledo-while 循环中使用 continue 时要格外小心。continue 跳过了一个用于更新循环变量的语句(如 i++),并且这个变量没有被其他地方更新,那么循环条件将永远不变,导致无限循环

如果上面的代码把 i++ 放在 if 语句后面,就会发生死循环:

// 错误示例,会导致死循环
while (i < 5) {
    if (i == 3) {
        printf("跳过数字 %d\n", i);
        continue; // 直接跳转到 while(i < 5),i 永远是 3
    }
    i++; // 这行代码在 i==3 时永远不会执行
    printf("当前数字是: %d\n", i);
}

continuebreak 的核心区别

这是初学者最容易混淆的地方,用一个表格来清晰地对比它们:

特性 continue break
作用范围 只在循环for, while, do-while)中使用。 可在循环switch语句中使用。
行为 跳过本次循环的剩余部分,进入下一次循环。 跳出整个循环switch 语句,执行循环/switch后面的代码。
循环控制 不终止循环,只是提前结束当前迭代。 终止整个循环。
比喻 “这个任务我不做了,休息一下,准备下一个任务。” “这个项目我不干了,直接回家。”

示例对比:

#include <stdio.h>
int main() {
    printf("--- 使用 continue ---\n");
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            continue;
        }
        printf("continue: %d\n", i);
    }
    printf("\n--- 使用 break ---\n");
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            break;
        }
        printf("break: %d\n", i);
    }
    return 0;
}

执行结果:

--- 使用 continue ---
continue: 1
continue: 2
continue: 4
continue: 5
--- 使用 break ---
break: 1
break: 2

从结果可以看出,continue 跳过了 i=3 的打印,但循环继续到 i=5,而 breaki=3 时直接终止了整个 for 循环。


continue 的实际应用场景

continue 通常用于以下情况:

  1. 过滤数据:在遍历一个数据集合(如数组)时,跳过不符合特定条件的元素。

    // 计算所有正整数的和,跳过负数
    int sum = 0;
    for (int i = 0; i < 10; i++) {
        if (numbers[i] < 0) {
            continue; // 跳过负数
        }
        sum += numbers[i];
    }
  2. 错误处理:在循环中遇到某些错误或特殊情况时,跳过当前的处理逻辑。

    // 读取文件,跳过空行
    char line[256];
    while (fgets(line, sizeof(line), file)) {
        if (line[0] == '\n') {
            continue; // 跳过空行
        }
        // 处理非空行...
    }
  3. 简化嵌套:有时候使用 continue 可以减少代码的嵌套层级,使代码更清晰。

    // 不使用 continue 的嵌套
    for (int i = 0; i < n; i++) {
        if (is_valid(i)) {
            // 很多代码...
            // 更多代码...
        }
    }
    // 使用 continue 减少嵌套
    for (int i = 0; i < n; i++) {
        if (!is_valid(i)) {
            continue;
        }
        // 很多代码...
        // 更多代码...
    }

    后一种写法对于 is_valid 为真的情况,逻辑更直接,缩进更少。


  • continue 的作用:在循环中,跳过本次循环剩余的代码,直接进入下一次循环。
  • 使用位置:仅限于 for, while, do-while 循环体内。
  • break 的区别continue 是“跳过本次”,break 是“跳出整个循环”。
  • 注意事项:在 whiledo-while 循环中,要确保 continue 不会导致循环变量无法更新,从而引发死循环。

合理使用 continue 可以让代码逻辑更清晰,减少不必要的嵌套,是 C 语言中一个非常有用的控制流语句。

-- 展开阅读全文 --
头像
int指针与int有何本质区别?
« 上一篇 02-26
织梦为何无法进行在线更新?
下一篇 » 02-26
取消
微信二维码
支付宝二维码

目录[+]