c语言中的continue是循环控制相关的关键字,作用是跳过当前循环体中剩余的语句,直接进入下一次循环的判定阶段,不会改变循环的终止条件,只会调整单次循环的执行流程。

continue的基本作用
continue只能在循环结构(for、while、do while)中使用,当程序执行到continue语句时,会立刻停止执行当前循环中continue之后的所有代码,然后根据循环类型进入下一轮循环的准备阶段:
- 在for循环中,会先执行循环的第三个表达式(通常是自增/自减操作),再判断循环条件是否成立
- 在while和do while循环中,会直接回到循环条件的判断位置,判定是否继续执行下一次循环
不同循环中的continue用法示例
for循环中的continue
下面的代码实现打印1到10中所有不是3的倍数的数字:
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 10; i++) {
// 如果i是3的倍数,跳过本次循环剩余代码
if (i % 3 == 0) {
continue;
}
printf("%d ", i);
}
return 0;
}
程序执行后输出结果为:1 2 4 5 7 8 10,当i为3、6、9时,执行continue后跳过了printf语句,直接进入i++的自增操作,再判断循环条件。
while循环中的continue
下面的代码实现从1开始累加,直到累加和超过20为止,过程中跳过数字4的累加:
#include <stdio.h>
int main() {
int num = 1;
int sum = 0;
while (sum <= 20) {
if (num == 4) {
num++;
continue;
}
sum += num;
num++;
}
printf("最终累加和为:%dn", sum);
return 0;
}
这里需要注意,while循环中如果使用continue,要提前处理循环变量的更新,否则可能出现死循环。上述代码在continue之前先执行了num++,避免num一直为4导致循环无法推进。
do while循环中的continue
下面的代码实现让用户输入数字,直到输入的数字大于10为止,过程中如果输入的是负数则重新输入:
#include <stdio.h>
int main() {
int input;
do {
printf("请输入一个大于10的数字:");
scanf("%d", &input);
if (input < 0) {
printf("输入为负数,请重新输入n");
continue;
}
} while (input <= 10);
printf("你输入的有效数字是:%dn", input);
return 0;
}
continue和break的区别
很多初学者容易混淆continue和break的用法,两者的核心区别如下:
| 关键字 | 作用 | 对循环的影响 |
|---|---|---|
| continue | 跳过当前循环剩余代码 | 进入下一次循环判定,循环可能继续执行 |
| break | 跳出整个循环结构 | 循环直接终止,不再执行后续任何循环操作 |
可以通过下面的代码直观感受两者的区别:
#include <stdio.h>
int main() {
int i;
printf("使用continue的循环结果:");
for (i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
printf("%d ", i);
}
printf("n使用break的循环结果:");
for (i = 1; i <= 5; i++) {
if (i == 3) {
break;
}
printf("%d ", i);
}
return 0;
}
上述代码执行后,第一段循环输出1 2 4 5,第二段循环输出1 2,可以清晰看到两者的不同效果。
使用continue的注意事项
- continue只能用在循环结构中,用在其他位置会导致编译错误
- 在while和do while循环中使用continue时,要确保循环变量的更新逻辑不会被跳过,否则很容易造成死循环
- continue不会影响循环的判定条件,只会跳过单次循环的部分执行逻辑,不要把它和循环的终止条件混淆