跳转至

循环中断

break

跳出当前循环,接着执行循环后面的语句。

for (int i = 1; ; i++) {
    if (i > 10) {
        break;
    }
    cout << i << ' ';
}

输出 1 到 10。i 变成 11 时,执行 break,结束循环。

这里省略了 for 中间的循环条件,表示条件一直成立,靠 break 退出。两个分号不能省。

while 也可以这样写

int i = 1;
while (true) {
    if (i > 10) {
        break;
    }
    cout << i << ' ';
    i++;
}

true 表示条件一直成立。注意不能漏掉 i++,否则 i 一直是 1,循环停不下来。

continue

跳过本轮剩下的语句,继续下一轮。

for (int i = 1; i < 10; i++) {
    if (i % 2 == 0) {
        continue;
    }
    cout << i << ' ';
}

输出 1 3 5 7 9。遇到偶数,就跳过本轮的输出。

continue 不会结束整个循环。

break 与 continue 的区别

语句 作用
break 结束当前循环
continue 跳过本轮剩余语句,循环继续

for 中,continue 后仍会执行更新操作。

上面的例子遇到偶数时,虽然跳过了输出,但仍会执行 i++,然后判断循环条件。

while 中,continue 后直接回到条件判断。

如果更新变量的语句写在 continue 后面,也会被跳过。

常见错误

continue 跳过了变量更新

int i = 1;
while (i < 10) {
    if (i % 2 == 0) {
        continue; // 错误:i等于2时,一直回到条件判断
    }
    cout << i << ' ';
    i++;
}

i 变成 2 后,每轮都会跳过 i++,变成死循环。

可以把需要跳过的操作,改成满足条件才执行:

int i = 1;
while (i < 10) {
    if (i % 2 != 0) {
        cout << i << ' ';
    }
    i++;
}

break 不会结束整个程序

跳出循环后,程序还会继续执行。结束 main,用的是 return。

嵌套循环里,break 只跳出它所在的最内层循环。

不会一下子跳出所有循环。下一篇讲循环嵌套时,再看具体例子。

如果循环里还套了 switch,写在 switch 中的 break 只结束这个 switch。