首页 > 编程笔记

C++ for循环语句详解

实现代码块的重复执行,C++ 提供了多种循环结构,包括 while、do while 和本节讲的 for 循环语句。

for 循环语句的基本语法结构如下:
for (表达式 1; 表达式 2; 表达式 3) {
    // 循环体:当表达式 2 的值为 true 时执行的代码块
}

结合 for 循环的语法结构,它的执行过程是:
  1. 首先执行一次表达式 1;
  2. 判断表达式 2 的值,如果为 true,则进入第 3 步,否则结束循环;
  3. 执行循环体;
  4. 执行表达式 3,然后回到第 2 步。

举个简单的例子(实例一):
#include <iostream>

int main() {
    for (int i = 0; i < 10; i++) {
        std::cout << i << " ";
    }
    return 0;
}
示例中 for 循环语句的执行过程是:
  1. 定义一个变量 i 并初始化它的值为 0;
  2. 判断 i<10 的值,如果为 true,则进入第 3 步,否则结束循环;
  3. 输出变量 i 的值;
  4. 执行 i++,然后回到第 2 步。

整个循环过程中,变量 i 的值是递增的,当 i 的值为 10 时,此时 i<10 的值为 false,循环过程结束。

执行程序,运行结果为:

0 1 2 3 4 5 6 7 8 9

for循环的灵活使用

for 语句中的 3 个表达式都是可以省略的,接下来给大家逐一探讨这些表达式的省略,并了解它们是如何影响循环行为的。

首先,如果不需要在循环开始时执行任何操作,可以省略表达式 1。例如,如果循环控制变量已在循环外部初始化,那么表达式 1 就可以省略。

举个简单的例子:
int i = 0;
for (; i < 10; i++) {
    std::cout << i << " ";
}
这里将变量 i 的初始化过程放到 for 循环的外面执行,执行过程和实例一中的 for 循环语句完全一样。

原则上,for 循环语句中的表达式 2 也是可以省略的。如果省略表达式 2,那么将无限次的执行循环体,除非在循环体内部使用 break 语句跳出循环。

例如:
for (;;) { // 无限循环
    // ...
    break; // 退出循环
}

当然,如果不需要在每次迭代后执行任何操作,可以省略表达式 3。例如:
for (int i = 0; i < 10;) {
    std::cout << i << " ";
    i++;
}
和实例一中的 for 语句相比,i++; 从表达式 3 的位置移到了循环体的末尾,它们的执行过程是完全相同的。

我们也可以将 for 语句的 3 个表达式全部省略,例如:
for( ; ; ){
    //循环体
}
如果循环体中没有使用 break 跳出,那么它就是一个无限循环(死循环)。

注意,for 循环的三个表达式都是可选的,但它们之间的分号不能省略。大多数情况下,至少应包括表达式 2,以明确指定循环的终止条件。

C++11基于范围的for循环

在 C++ 11 新标准中,为 for 循环添加了一种全新的语法格式,如下所示:
for (declaration : expression){
    //循环体
}

举个简单的例子:
#include <iostream>

int main() {
    int a[] = { 1,2,3,4,5 };
    for (int i : a) {
        std::cout << i << " ";
    }
    return 0;
}
输出结果为:

1 2 3 4 5

总结

C++ 中的 for 循环提供了一种结构清晰,可读性更高的方法来执行有限次数的迭代,恰当使用 for 循环可以使代码更加整洁、高效和可维护。

无论是处理常规的计数迭代,还是使用范围 for 循环遍历数组或者容器,for循环都是 C++ 程序员必备的工具之一。

推荐阅读