C++ break 和 continue 的区别

2024年8月28日 | 阅读 8 分钟

在C++中,用于终止循环的循环控制语句称为break。一旦在循环内部遇到break语句,循环迭代就会结束,控制权会立即从循环转移到循环后的第一个语句。

Break语句通常在我们不确定精确的循环迭代次数,或者希望根据条件结束循环时使用。

在这里,我们将探讨如何在三种不同的循环类型中使用break语句

  • 简单循环
  • 嵌套循环
  • 无限循环

现在让我们来看看上述三种循环类型中基于break语句的示例。

简单循环中的break

考虑一个我们需要在数组中查找特定元素的情况。使用循环从第一个索引开始遍历数组,然后将数组成员与提供的键进行比较来完成此操作。

示例

输出

Element found at position: 3
……………………………………………
Process executed in 1.11 seconds
Press any key to continue.

说明

上述代码顺利执行。然而,上述代码效率低下。即使找到元素,上述代码仍然会完成所有迭代。如果数组包含1000个元素,并且要搜索的键位于第一个位置,则上述技术将运行999次不必要的迭代。

我们可以在程序中利用break语句来避免这些无意义的迭代。一旦满足条件,break语句就会使控制权从循环返回。因此,如下所示,我们将把break语句与将键与数组元素进行比较的if条件结合起来。

示例

输出

Element found at position: 3
..................................................
Process executed in 1.11 seconds
Press any key to continue.

嵌套循环中的break

在处理嵌套循环时,如果最内层循环包含break语句,break语句也是一个选项。只有最内层循环会释放控制权。

输出

***
***
***
***
***
……………………..
Process executed in 1.11 seconds
Press any key to continue.

说明

从上面的代码中我们可以看到,内部循环设置为运行10次迭代。然而,一旦j的值超过3,内部循环就会停止运行,将内部循环的迭代次数限制为仅3次。但是,外部循环迭代不受影响。因此,break只影响它所在的循环。

无限循环中的break

为了结束无限循环的执行,break语句可以与条件结合使用。

示例

输出

Execution timed out 
..................................
Process executed in 1.11 seconds
Press any key to continue.

说明

上述程序中的循环条件(它决定何时结束循环)始终为真。这会导致循环无限期地运行。

注意:请不要在您的编译器中运行上述程序,因为它处于无限循环中,可能需要您强制退出编译器才能结束程序。

通过使用break语句,如下所示,我们可以解决这个问题。

输出

1 2 3 4 5 6 7 8 9 10 
................................
Process executed in 1.11 seconds
Press any key to continue.

说明

上述代码将循环迭代限制为十次。除此之外,Switch case语句也可以使用break。

C语言中的continue语句

C语言的continue语句充当跳转语句,将程序控制转移到循环的开头。while循环、for循环或do while循环都可以使用continue语句来改变程序的正常运行方式。与break不同,它不能与C switch case一起使用。

使用时,C语言continue语句将程序控制返回到循环的开头。因此,控制权转移到循环的下一次迭代并跳过当前迭代。continue语句之后的循环中的语句不会执行。

只需将continue关键字放置在循环体中我们希望的任何位置即可构成continue语法。

C语言中continue的使用

C语言中的每种循环类型都可以通过使用continue语句跳过当前迭代。它可以应用于C语言中的以下几种循环类型

  • 单循环
  • 嵌套循环

在无限循环中使用continue没有用,因为当迭代次数是无限的时,跳过当前迭代不会有什么区别。

C语言中continue的示例

示例1:C语言中使用单个循环和continue语句的程序。

for、while和do-while循环都支持continue语句。

输出

1 2 3 5 6 7 8 
1 2 3 5 6 7 8 
.........................
Process executed in 1. 11 seconds
Press any key to continue.

示例2:一个在C语言中利用嵌套循环继续的程序。

continue语句一次只能处理一个循环。为了在使用嵌套循环时跳过内层循环的当前迭代,我们可以使用continue语句。

输出

0 1 2 4 
0 1 2 4 
0 1 2 4 
.............
Process executed in 1.11 seconds
Press any key to continue.

说明

当在上述程序中使用continue语句时,它会跳过当前的内层循环迭代。因此,内层循环更新表达式管理程序。通过这种方式,输出中永远不会出现3。

continue语句的操作如下

  • 步骤1:确定循环条件为真后,循环开始运行。
  • 步骤2:将评估continue语句的条件。
  • 步骤3A:如果条件为假,执行将照常进行。
  • 步骤3B:如果条件满足,程序将移至循环的开头,并跳过continue语句之后的所有内容。
  • 步骤4:重复步骤1到4,直到循环结束。

尽管break和continue语句都用于明确改变程序的正常流程,但它们之间存在一些差异。

break和continue语句之间区别的示例。

输出

The loop with break produces output as: 
1 2 
The loop with continue produces output as: 
1 2 4 5
……………………………………………………………………..
Process executed in 0.1 seconds
Press any key to continue.

说明

解释:在上面的程序中,第一个循环将显示I的值直到3,然后停止,因为当I等于3时使用了break语句。当i等于3时,第二个for循环将继续运行而不打印i的结果。


下一个主题C++ 布尔类型