c语言 continue

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

continue 是 C 语言中的一个控制流语句,它的作用是立即终止当前正在执行的本次循环迭代,并直接跳转到循环的条件判断部分,准备开始下一次迭代。


核心要点

  1. 作用范围continue 只能在 forwhiledo-while 循环内部使用。
  2. 核心行为
    • 跳过:跳过 continue 语句之后,循环体中剩余的所有代码。
    • 继续:立即开始下一次循环迭代。
  3. break 的区别:这是初学者最容易混淆的地方。
    • continue跳出**本次迭代,继续**下一次迭代。
    • break跳出整个循环,循环彻底结束。

语法

continue 语句的语法非常简单,它本身就是一个关键字:

continue;

它通常与一个 if 条件语句结合使用,以决定是否要跳过本次迭代。


工作原理详解

为了更好地理解,我们来看一下 continue 在不同类型循环中的具体工作流程。

for 循环中

continuefor 循环中执行时:

  1. 程序立即跳转到循环的更新表达式for 循环第三部分,如 i++)。
  2. 执行更新表达式。
  3. 然后执行条件判断for 循环第二部分,如 i < 10)。
  4. 如果条件为真,则开始下一次迭代;如果为假,则循环结束。

示例代码:

#include <stdio.h>
int main() {
    printf("--- for 循环中的 continue 示例 ---\n");
    for (int i = 0; i < 10; i++) {
        // i 是 3 的倍数,则跳过本次迭代的剩余代码
        if (i % 3 == 0) {
            printf("i = %d 是 3 的倍数,跳过打印,\n", i);
            continue; // 跳转到 i++,然后判断 i < 10
        }
        // 这行代码在 i 是 3 的倍数时不会被执行
        printf("i = %d\n", i);
    }
    return 0;
}

输出结果:

--- for 循环中的 continue 示例 ---
i = 0 是 3 的倍数,跳过打印。
i = 1
i = 2
i = 3 是 3 的倍数,跳过打印。
i = 4
i = 5
i = 6 是 3 的倍数,跳过打印。
i = 7
i = 8
i = 9 是 3 的倍数,跳过打印。

while 循环中

continuewhile 循环中执行时:

  1. 程序立即跳转到循环的条件判断部分。
  2. 执行条件判断。
  3. 如果条件为真,则开始下一次迭代;如果为假,则循环结束。

⚠️ 重要提示continue 之后的代码包含了改变循环条件的操作(i++),continue 跳过了这个操作,那么循环可能会变成无限循环

示例代码(正确使用):

#include <stdio.h>
int main() {
    int i = 0;
    printf("\n--- while 循环中的 continue 示例 ---\n");
    while (i < 10) {
        if (i % 3 == 0) {
            printf("i = %d 是 3 的倍数,跳过打印并增加 i,\n", i);
            i++; // 必须在这里增加 i,否则 i 永远不会改变
            continue; // 跳转到 while (i < 10) 的判断
        }
        printf("i = %d\n", i);
        i++; // 正常情况下的 i++
    }
    return 0;
}

输出结果:

--- while 循环中的 continue 示例 ---
i = 0 是 3 的倍数,跳过打印并增加 i。
i = 1
i = 2
i = 3 是 3 的倍数,跳过打印并增加 i。
i = 4
i = 5
i = 6 是 3 的倍数,跳过打印并增加 i。
i = 7
i = 8
i = 9 是 3 的倍数,跳过打印并增加 i。

do-while 循环中

do-while 循环的行为与 while 循环类似,当 continue 执行时,程序会跳转到循环末尾的 while 条件判断部分。

示例代码:

#include <stdio.h>
int main() {
    int i = 0;
    printf("\n--- do-while 循环中的 continue 示例 ---\n");
    do {
        if (i == 5) {
            printf("i = %d,跳过本次迭代,\n", i);
            i++; // 同样需要手动增加 i
            continue;
        }
        printf("i = %d\n", i);
        i++;
    } while (i < 10);
    return 0;
}

输出结果:

--- do-while 循环中的 continue 示例 ---
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5,跳过本次迭代。
i = 6
i = 7
i = 8
i = 9

常见应用场景

continue 最常见的用途是过滤跳过某些不符合特定条件的迭代。

场景:计算一个数组中所有正数的平均值

#include <stdio.h>
int main() {
    int numbers[] = {10, -5, 20, -8, 15, 0, 30};
    int count = sizeof(numbers) / sizeof(numbers[0]);
    int sum = 0;
    int positive_count = 0;
    printf("\n--- 计算 正数 平均值示例 ---\n");
    for (int i = 0; i < count; i++) {
        // 如果数字不是正数,就跳过本次迭代
        if (numbers[i] <= 0) {
            continue;
        }
        // 只有正数才会执行到这里
        sum += numbers[i];
        positive_count++;
        printf("累加正数: %d (当前总和: %d)\n", numbers[i], sum);
    }
    if (positive_count > 0) {
        double average = (double)sum / positive_count;
        printf("\n所有正数的平均值是: %.2f\n", average);
    } else {
        printf("\n数组中没有正数,\n");
    }
    return 0;
}

输出结果:

--- 计算 正数 平均值示例 ---
累加正数: 10 (当前总和: 10)
累加正数: 20 (当前总和: 30)
累加正数: 15 (当前总和: 45)
累加正数: 30 (当前总和: 75)
所有正数的平均值是: 18.75

使用 continue 的注意事项

  1. 避免过度使用:虽然 continue 可以让代码逻辑更清晰,但滥用它可能会导致代码流程难以追踪,通过 if-else 结构重构代码可能会更直观。

    • 对比示例

      // 使用 continue 的方式
      for (int i = 0; i < n; i++) {
          if (condition) {
              // 处理 A
              continue;
          }
          // 处理 B
      }
      // 使用 if-else 的方式
      for (int i = 0; i < n; i++) {
          if (condition) {
              // 处理 A
          } else {
              // 处理 B
          }
      }

      在这个简单例子中,两种方式可读性差不多,但在更复杂的逻辑中,if-else 的层级嵌套可能会很深,continue 可以用来“扁平化”代码结构,减少嵌套。

  2. 注意 whiledo-while 循环中的陷阱:如前所述,在 whiledo-while 循环中,continue 跳过了更新循环变量的代码,极易导致无限循环。

特性 描述
continue
作用 终止当前循环迭代,立即开始下一次迭代。
使用位置 只能在 for, while, do-while 循环内部。
break 的区别 break 跳出整个循环;continue 跳出本次迭代。
主要用途 用于在循环中跳过不符合特定条件的部分,常用于数据过滤。
注意事项 whiledo-while 循环中要小心,避免因跳过更新变量而导致无限循环。
-- 展开阅读全文 --
头像
织梦生成静态打开空白
« 上一篇 今天
dede 上传文件失败
下一篇 » 今天

相关文章

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

目录[+]