文章目录
5.7.1 C语言 用break语句提前终止循环
在C语言中,break
语句用于立即终止当前循环的执行,跳出循环体,并继续执行循环后面的代码。break
可以用于 for
、while
和 do-while
循环。
使用场景
- 提前退出循环:当在循环中检测到某个条件满足时,你可能不再需要继续执行循环的剩余部分。
- 跳出多重嵌套循环:在多层嵌套循环中,
break
只能跳出最内层的循环。
示例代码
#include <stdio.h>
int main() {
int i;
// for 循环中使用 break
for (i = 0; i < 10; i++) {
if (i == 5) {
break; // 当 i 等于 5 时,跳出循环
}
printf("In for loop: %d\n", i);
}
printf("Loop exited.\n");
// while 循环中使用 break
int j = 0;
while (j < 10) {
if (j == 5) {
break; // 当 j 等于 5 时,跳出循环
}
printf("While loop: %d\n", j);
j++;
}
printf("Loop exited.\n");
// do-while 循环中使用 break
int k = 0;
do {
if (k == 5) {
break; // 当 k 等于 5 时,跳出循环
}
printf("Do-while loop: %d\n", k);
k++;
} while (k < 10);
printf("Loop exited.\n");
return 0;
}
输出结果
In for loop: 0
In for loop: 1
In for loop: 2
In for loop: 3
In for loop: 4
Loop exited.
While loop: 0
While loop: 1
While loop: 2
While loop: 3
While loop: 4
Loop exited.
Do-while loop: 0
Do-while loop: 1
Do-while loop: 2
Do-while loop: 3
Do-while loop: 4
Loop exited.
注意事项
- 避免滥用
break
:过度使用break
可能会使代码难以理解和维护。在可能的情况下,尽量使用循环的自然结束条件。 - 多重嵌套循环:在多重嵌套循环中,
break
只能跳出最内层的循环。如果你需要跳出外层循环,可能需要使用标签(goto
语句)或者重新设计循环结构。
使用标签跳出多层循环
在C语言中,可以使用标签(label)和 goto
语句来跳出多层嵌套循环,但这种做法通常不推荐,因为它可能导致代码难以理解和维护。
#include <stdio.h>
int main() {
int i, j;
start_over:
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
if (i * j > 2) {
goto end_loop;
}
printf("i = %d, j = %d\n", i, j);
}
}
end_loop:
printf("Exited from nested loops.\n");
return 0;
}
在这个例子中,当 i * j > 2
时,使用 goto
语句跳出所有循环。但请注意,过度使用 goto
可能会使代码结构混乱,应尽量避免。
5.7.2 用continue语句提前结束本次循环
在C语言中,continue
语句用于跳过当前循环的剩余部分,并立即开始下一次循环的迭代。continue
可以用于 for
、while
和 do-while
循环。
使用场景
- 跳过某些迭代:当你希望在满足某个条件时跳过当前循环的剩余部分,但不终止整个循环。
- 忽略无效数据:在处理数据时,如果遇到无效或不需要的数据,可以使用
continue
跳过这些数据的处理。
示例代码
#include <stdio.h>
int main() {
int i;
// for 循环中使用 continue
for (i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // 如果 i 是偶数,跳过打印
}
printf("In for loop: %d\n", i);
}
printf("Loop continued.\n");
// while 循环中使用 continue
int j = 0;
while (j < 10) {
if (j % 2 == 0) {
continue; // 如果 j 是偶数,跳过打印
}
printf("While loop: %d\n", j);
j++;
}
printf("Loop continued.\n");
// do-while 循环中使用 continue
int k = 0;
do {
if (k % 2 == 0) {
continue; // 如果 k 是偶数,跳过打印
}
printf("Do-while loop: %d\n", k);
k++;
} while (k < 10);
printf("Loop continued.\n");
return 0;
}
输出结果
In for loop: 1
In for loop: 3
In for loop: 5
In for loop: 7
In for loop: 9
Loop continued.
While loop: 1
While loop: 3
While loop: 5
While loop: 7
While loop: 9
Loop continued.
Do-while loop: 1
Do-while loop: 3
Do-while loop: 5
Do-while loop: 7
Do-while loop: 9
Loop continued.
注意事项
- 避免滥用
continue
:过度使用continue
可能会使代码难以理解和维护。在可能的情况下,尽量使用循环的自然结束条件。 - 与
break
的区别:continue
只是跳过当前迭代的剩余部分,而break
则是完全终止循环。 - 多重嵌套循环:
continue
只能影响当前最内层的循环,不能跳出外层循环。
使用标签与 continue
虽然 continue
本身不能用于跳出多层循环,但可以通过标签和 continue
的组合来实现类似的效果,但这种做法通常不推荐,因为它可能导致代码难以理解和维护。
#include <stdio.h>
int main() {
int i, j;
outer_loop:
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
if (i * j > 2) {
continue outer_loop; // 跳过当前迭代,开始下一次外层循环
}
printf("i = %d, j = %d\n", i, j);
}
}
printf("Continued to next outer loop iteration.\n");
return 0;
}
在这个例子中,使用了标签 outer_loop
和 continue
来跳过当前迭代并开始下一次外层循环的迭代。但请注意,过度使用标签和 goto
可能会使代码结构混乱,应尽量避免。
5.7.3 break语句和continue语句的区别
break
语句和 continue
语句在C语言中都是控制循环流程的关键字,但它们的作用和使用场景有所不同:
break
语句
- 作用:终止当前循环的执行,即跳出整个循环体,不再执行循环体中的剩余代码,直接跳出到循环后面的代码执行。
- 使用场景:
- 当满足某个条件时,不再需要继续执行循环。
- 用于提前退出循环,特别是在多重嵌套循环中,可以配合标签使用来跳出特定的循环层级。
continue
语句
- 作用:跳过当前循环的剩余部分,直接进行下一次循环的迭代。
- 使用场景:
- 当满足某个条件时,不想执行循环体中的剩余代码,但希望继续执行后续的循环迭代。
- 用于跳过某些特定的迭代,而不是终止整个循环。
区别
-
控制范围:
break
终止整个循环。continue
跳过当前迭代,继续执行后续的迭代。
-
执行流程:
- 使用
break
后,将不再执行循环体中的任何代码,直接跳出循环。 - 使用
continue
后,将跳过当前迭代中continue
语句之后的所有代码,直接进行循环条件的判断,准备下一次迭代。
- 使用
-
使用目的:
break
用于完全退出循环。continue
用于跳过当前迭代中剩余的部分。
示例
下面是一个示例,展示了 break
和 continue
的区别:
#include <stdio.h>
int main() {
// 使用 break
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // 当 i 等于 5 时,跳出循环
}
printf("With break: %d\n", i);
}
// 使用 continue
for (int j = 0; j < 10; j++) {
if (j % 2 == 0) {
continue; // 如果 j 是偶数,跳过打印
}
printf("With continue: %d\n", j);
}
return 0;
}
输出结果
With break: 0
With break: 1
With break: 2
With break: 3
With break: 4
With continue: 1
With continue: 3
With continue: 5
With continue: 7
With continue: 9
在这个示例中:
- 使用
break
时,当i
等于 5 时,循环完全终止。 - 使用
continue
时,跳过了所有偶数的打印,只打印了奇数。
通过这个示例,你可以看到 break
和 continue
在实际使用中的不同效果。