1. 主页
  2. 文档
  3. C语言教程
  4. C语言控制语句
  5. C/C++ 中的Break语句

C/C++ 中的Break语句

C 或 C++ 中的 break 是用于终止循环的循环控制语句。一旦在循环中遇到 break 语句,循环迭代就停止在那里并且控制立即从循环返回到循环之后的第一个语句。
语法:

break;

基本上,当我们不确定循环的实际迭代次数或者我们想根据某些条件终止循环时,会使用 break 语句。

我们将在这里看到 break 语句在三种不同类型的循环中的用法:

  1. 简单循环
  2. 嵌套循环
  3. 无限循环

现在让我们看一下使用 break 语句的上述三种循环类型中的每一种的示例。

  • 简单循环:考虑我们要在数组中搜索元素的情况。为此,请使用循环从第一个索引开始遍历数组,并将数组元素与给定键进行比较。
    下面是这个想法的实现:
// C program to illustrate 
// Linear Search 

#include <stdio.h>

void findElement(int arr[], int size, int key) 
{ 
// loop to traverse array and search for key 
for (int i = 0; i < size; i++) { 
if (arr[i] == key) { 
printf("Element found at position: %d", (i + 1)); 
} 
} 
} 

int main() {
int arr[] = { 1, 2, 3, 4, 5, 6 }; 

// no of elements
int n = 6; 

// key to be searched 
int key = 3; 

// Calling function to find the key 
findElement(arr, n, key); 

return 0;
}

输出:

Element found at index: 3

上面的代码运行良好,没有错误。但是上面的代码效率不高。即使在找到元素之后,上面的代码也完成了所有的迭代。假设数组中有1000 个元素,并且要搜索的键出现在第 1 个位置,因此上述方法将执行999次迭代,这些迭代没有任何意义且无用。
为了避免这些无用的迭代,我们可以在程序中使用 break 语句。一旦遇到 break 语句,循环中的控件将在条件满足后立即返回。因此将使用带有 if 条件的 break 语句,它将键与数组元素进行比较,如下所示:


// C program to illustrate
// using break statement 
// in Linear Search
#include <stdio.h>


void findElement(int arr[], int size, int key)
{
// loop to traverse array and search for key
for (int i = 0; i < size; i++) {
if (arr[i] == key) {
printf("Element found at position: %d", (i + 1)); 

// using break to terminate loop execution
break;
}
}
}

int main() {
int arr[] = { 1, 2, 3, 4, 5, 6 };

// no of elements
int n = 6; 

// key to be searched
int key = 3;

// Calling function to find the key
findElement(arr, n, key);

return 0;
}

输出:

Element found at position: 3
  • 嵌套循环:我们也可以在使用嵌套循环时使用 break 语句。如果在最内层循环中使用了 break 语句。控制只会从最里面的循环中出来。下面是在嵌套循环中使用 break 的示例:
// C program to illustrate
// using break statement 
// in Nested loops
#include <stdio.h>

int main() {
// nested for loops with break statement
// at inner loop
for (int i = 0; i < 5; i++) {
for (int j = 1; j <= 10; j++) {
if (j > 3)
break;
else
printf("*");
}
printf("\n");
}

return 0;
}

输出:

***
***
***
***
***

在上面的代码中,我们可以清楚地看到内部循环被编程为执行 10 次迭代。但是一旦j的值大于 3,内部循环就会停止执行,这会将内部循环的迭代次数限制为仅 3 次迭代。但是外循环的迭代不受影响。
因此,break 仅适用于它所在的循环。

  • 无限循环:break 语句可以包含在带有条件的无限循环中,以终止无限循环的执行。
    考虑下面的无限循环:
// C program to illustrate
// using break statement 
// in Infinite loops
#include <stdio.h>

int main() {
// loop initialization expression
int i = 0;

// infinite while loop
while (1) {
printf("%d ", i);
i++;
}

return 0;
}

注意:请不要在编译器中运行上述程序,因为它是一个无限循环,因此您可能必须强制退出编译器才能终止程序。

在上述程序中,循环终止所基于的循环条件始终为真。因此,循环执行了无数次。我们可以通过使用如下所示的 break 语句来纠正这个问题:

// C program to illustrate
// using break statement 
// in Infinite loops
#include <stdio.h>

int main() {
// loop initialization expression
int i = 1;

// infinite while loop
while (1) {
if (i > 10)
break;

printf("%d ", i);
i++;
}

return 0;
}

除此之外,break 也可以在 Switch case 语句中使用。

这篇文章对您有用吗?