首页 > 编程笔记 > C语言笔记

C语言break和continue的区别(附带示例)

在C语言中,break 和 continue 是两个重要的流程控制语句,它们在循环结构中发挥着重要作用。尽管这两个语句看似相似,但它们的功能和使用场景有着显著的区别,让我们深入探讨这两个语句的特点、用法以及区别。

break 语句的用法

break 语句的作用是立即终止当前正在执行的循环(或者 switch 语句),并将程序控制转移到循环(或者 switch 语句)之后的下一条语句。当程序执行到 break 语句时,它会直接跳出当前的循环结构,不再执行循环体中的其他语句。这个特性使得 break 语句成为在特定条件下提前结束循环的常用方法。


来看一个使用 break 语句的例子:

#include <stdio.h>

int main() {
    int i;
    for (i = 1; i <= 10; i++) {
        if (i == 5) {
            break;
        }
        printf("%d ", i);
    }
    printf("\nLoop ended.");
    return 0;
}

在这个例子中,我们有一个从 1 到 10 的 for 循环。然而,当 i 等于 5 时,break 语句会被执行,导致循环立即终止。因此,程序只会打印出 1 到 4 的数字。

输出结果:
1 2 3 4 
Loop ended.

continue 语句的用法

continue 语句的作用是跳过当前循环的剩余部分,直接进入下一次循环。与 break 不同,continue 不会终止整个循环,而是立即开始下一次迭代。这个特性使得 continue 成为在特定条件下跳过某些代码而继续循环的常用方法。
 

让我们看一个使用 continue 语句的例子:

#include <stdio.h>

int main() {
    int i;
    for (i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            continue;
        }
        printf("%d ", i);
    }
    printf("\nLoop ended.");
    return 0;
}

在这个例子中,我们同样有一个从 1 到 10 的 for 循环。但是,当 i 是偶数时,continue 语句会被执行,导致循环跳过当前迭代的剩余部分,直接进入下一次迭代。因此,程序只会打印出所有的奇数。

输出结果:
1 3 5 7 9 
Loop ended.

break 和 continue 的区别

现在,让我们更深入地比较 break 和 continue 的区别:

为了更好地理解这两个语句在嵌套循环中的行为,让我们看一个更复杂的例子:

#include <stdio.h>

int main() {
    int i, j;
    for (i = 1; i <= 3; i++) {
        printf("Outer loop: %d\n", i);
        for (j = 1; j <= 3; j++) {
            if (i == 2 && j == 2) {
                break;
            }
            printf("  Inner loop: %d\n", j);
        }
    }
    printf("Program ended.");
    return 0;
}

在这个例子中,我们有一个嵌套的 for 循环。当外层循环 i 等于 2 且内层循环 j 等于 2 时,break 语句会被执行。这将导致内层循环提前结束,但外层循环会继续执行。

输出结果:
Outer loop: 1
  Inner loop: 1
  Inner loop: 2
  Inner loop: 3
Outer loop: 2
  Inner loop: 1
Outer loop: 3
  Inner loop: 1
  Inner loop: 2
  Inner loop: 3
Program ended.

如果我们将 break 改为 continue,结果会有所不同:

#include <stdio.h>

int main() {
    int i, j;
    for (i = 1; i <= 3; i++) {
        printf("Outer loop: %d\n", i);
        for (j = 1; j <= 3; j++) {
            if (i == 2 && j == 2) {
                continue;
            }
            printf("  Inner loop: %d\n", j);
        }
    }
    printf("Program ended.");
    return 0;
}

在这个修改后的版本中,当 i 等于 2 且 j 等于 2 时,continue 语句会被执行。这将导致内层循环跳过当前迭代,但不会结束整个内层循环。

输出结果:
Outer loop: 1
  Inner loop: 1
  Inner loop: 2
  Inner loop: 3
Outer loop: 2
  Inner loop: 1
  Inner loop: 3
Outer loop: 3
  Inner loop: 1
  Inner loop: 2
  Inner loop: 3
Program ended.

通过这些例子,我们可以清楚地看到 break 和 continue 在不同情况下的行为差异,在实际编程中,我们需要根据具体的需求和场景来选择使用 break 还是 continue。

推荐阅读