目录
1.循环类型
while循环:
for循环
基于范围的for循环(C++11)
do...while 循环
2.循环控制语句
3.无限循环
有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。
编程语言提供了允许更为复杂的执行路径的多种控制结构。
循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式:
1.循环类型
C++ 编程语言提供了以下几种循环类型。
while循环:
在C++中,while
循环是一种常见的控制流结构,用于重复执行一段代码,直到给定的条件为假为止。while
循环的语法如下:
while (condition) {// 在条件为真时执行的代码块
}
condition
是一个表达式,它会在每次循环迭代开始时被求值。只要 condition
的值为真(非零),循环中的代码块就会被执行。一旦 condition
的值为假(0),循环将终止,控制流将跳到循环之后的代码。
下面是一个简单的示例,展示了 while
循环的基本用法:
#include <iostream>int main() {int count = 0;while (count < 5) {std::cout << "Count: " << count << std::endl;count++;}std::cout << "Loop finished." << std::endl;return 0;
}
在这个示例中,while
循环重复执行了一个打印语句,直到 count
的值达到 5 为止。每次循环迭代时,count
的值都会增加,直到达到终止条件。
需要注意的是,如果 condition
初始值为假,循环中的代码块将不会被执行,例如:
#include <iostream>int main() {int count = 10;while (count < 5) {std::cout << "This won't be printed." << std::endl;count++;}std::cout << "Loop finished." << std::endl;return 0;
}
在这个示例中,count
的初始值为 10,因此 while
循环的条件 count < 5
为假,循环中的代码块不会执行,直接跳到循环之后的代码。
需要谨慎避免进入无限循环,即循环条件永远为真的情况,这将导致程序陷入无限循环中,永远无法终止。
for循环
for
循环是C++中另一种常见的循环结构,通常用于迭代固定次数的循环或者遍历容器等数据结构。for
循环的语法如下:
for (initialization; condition; update) {// 在条件为真时执行的代码块
}
其中:
initialization
:循环开始前的初始化表达式,通常用于初始化计数器或声明迭代变量。condition
:循环迭代的条件表达式,类似于while
循环的条件部分。update
:循环迭代后更新迭代变量的表达式。
for
循环会按照以下步骤执行:
- 执行
initialization
部分,通常用于初始化循环计数器或者迭代变量。 - 检查
condition
是否为真。如果为真,则执行循环中的代码块,然后执行update
部分。 - 重复步骤2,直到
condition
为假,然后退出循环,执行循环后的代码。
下面是一个简单的示例,展示了 for
循环的基本用法:
#include <iostream>int main() {for (int i = 0; i < 5; i++) {std::cout << "Count: " << i << std::endl;}std::cout << "Loop finished." << std::endl;return 0;
}
在这个示例中,for
循环用于迭代从0到4的5个整数,并在每次迭代中打印当前的计数器值。循环终止条件是 i < 5
,每次迭代后 i
的值会递增。
和 while
循环一样,for
循环也需要谨慎避免进入无限循环,确保循环条件能够在某个时刻变为假。
基于范围的for循环(C++11)
基于范围的 for
循环是 C++11 引入的一种循环结构,用于遍历容器中的元素或者其他可迭代对象的元素,语法简洁易读。使用基于范围的 for
循环可以更加方便地遍历数组、容器、字符串等数据结构,而不必关心索引或迭代器的细节。
基于范围的 for
循环的语法如下:
for (declaration : range) {// 在每次迭代中使用当前元素的代码
}
其中:
declaration
:用于声明迭代变量的语句,通常是对应容器中元素类型的引用或者值的拷贝。range
:要遍历的范围,可以是数组、容器、字符串等。
下面是一个简单的示例,展示了基于范围的 for
循环的用法:
#include <iostream>
#include <vector>int main() {std::vector<int> numbers = {1, 2, 3, 4, 5};// 使用基于范围的for循环遍历vector中的元素for (int num : numbers) {std::cout << num << " ";}std::cout << std::endl;std::string message = "Hello";// 使用基于范围的for循环遍历字符串中的字符for (char ch : message) {std::cout << ch << " ";}std::cout << std::endl;return 0;
}
在这个示例中,首先使用基于范围的 for
循环遍历了一个整型向量 numbers
中的元素,并打印每个元素的值。然后,使用相同的方法遍历了一个字符串 message
中的字符,并打印出来。
基于范围的 for
循环可以使代码更加简洁、清晰,并且避免了手动处理索引或迭代器的麻烦。
do...while 循环
do...while
循环是C++中的一种循环结构,与 while
循环类似,但在判断循环条件之前,先执行一次循环体。这意味着 do...while
循环至少会执行一次循环体,即使循环条件一开始就为假。
do...while
循环的语法如下:
do {// 循环体
} while (condition);
其中:
condition
:循环条件,类似于while
循环中的条件表达式。
下面是一个简单的示例,展示了 do...while
循环的用法:
#include <iostream>int main() {int count = 0;do {std::cout << "Count: " << count << std::endl;count++;} while (count < 5);std::cout << "Loop finished." << std::endl;return 0;
}
在这个示例中,do...while
循环会至少执行一次循环体,即使 count
的初始值大于或等于 5。循环体内部的 count++
语句使得 count
每次循环迭代时增加,直到达到循环条件 count < 5
不成立为止。
需要注意的是,尽管 do...while
循环会至少执行一次循环体,但在编写代码时仍然需要谨慎考虑循环的逻辑,确保循环条件的正确性,以避免不必要的循环执行。
2.循环控制语句
循环控制语句是用于在循环执行过程中改变控制流程的语句。在C++中,有三种主要的循环控制语句:break
、continue
和 goto
。
break
: break
语句用于立即终止循环,并跳出循环体。当执行 break
时,循环执行会立即停止,控制流将跳到循环之后的代码。
for (int i = 0; i < 10; i++) {if (i == 5) {break; // 当 i == 5 时,终止循环}std::cout << i << " ";
}
continue
: continue
语句用于跳过当前循环迭代的剩余部分,立即进入下一次迭代。执行 continue
时,当前迭代中 continue
语句之后的代码将不再执行,直接进行下一次循环迭代。
for (int i = 0; i < 5; i++) {if (i == 2) {continue; // 当 i == 2 时,跳过本次迭代}std::cout << i << " ";
}
goto
: goto
语句允许直接跳转到程序中的标签位置。尽管 goto
语句在大多数情况下应该避免使用,因为它容易导致程序难以理解和维护,但在某些特殊情况下,它可能是一种有效的控制流程工具。
for (int i = 0; i < 5; i++) {if (i == 3) {goto endLoop; // 当 i == 3 时,跳转到标签 endLoop 处}std::cout << i << " ";
}
endLoop:
std::cout << "End of loop." << std::endl;
3.无限循环
如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。
#include <iostream>
using namespace std;int main ()
{for( ; ; ){printf("This loop will run forever.\n");}return 0;
}
当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,C++ 程序员偏向于使用 for(;;) 结构来表示一个无限循环。
注意:您可以按 Ctrl + C 键终止一个无限循环。