C++ for 循环
C++ for 循环语句用于重复执行一组代码指定次数
for ( init; condition; increment ) { statement(s); }
下面是 for 循环的控制流
-
init 会首先被执行,且只会执行一次
这一步允许声明并初始化任何循环控制变量
也可以不在这里写任何语句,只要有一个分号出现即可
-
接下来,会判断 condition
- 如果为真,则执行循环主体
- 如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句
-
在执行完 for 循环主体后,控制流会跳回上面的 increment 语句
该语句允许更新循环控制变量
该语句可以留空,只要在条件后有一个分号出现即可
-
条件再次被判断
- 如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)
- 在条件变为假时,for 循环终止
流程图
C++ 中 for 循环语句的执行流程如下
范例
下面的代码演示了 for
循环的使用,重复输出 a
的值,直到 a >= 20
#include <iostream> using namespace std; int main () { // for 循环执行 for( int a = 10; a < 20; a = a + 1 ) { cout << "a 的值:" << a << endl; } return 0; }
编译和运行以上范例,输出结果如下:
a 的值: 10 a 的值: 11 a 的值: 12 a 的值: 13 a 的值: 14 a 的值: 15 a 的值: 16 a 的值: 17 a 的值: 18 a 的值: 19
基于范围的 for 循环( C++11 )
C++11 中添加了一种 for
循环格式,允许迭代一个数组
int my_array[5] = {1, 2, 3, 4, 5}; // 每个数组元素乘于 2 for (int &x : my_array) { x *= 2; cout << x << endl; } // auto 类型也是 C++11 新标准中的,用来自动获取变量的类型 for (auto &x : my_array) { x *= 2; cout << x << endl; }
上面 for 述句的第一部分定义被用来做范围迭代的变量,就像被声明在一般 for 循环的变量一样,其作用域仅只于循环的范围
而在":"之后的第二区块,代表将被迭代的范围
范例
下面的范例演示了如何使用 for
语句迭代输出 "some string"
中的每一个字符的大写
#include<iostream> #include<string> #include<cctype> using namespace std; int main() { string str("some string"); // range for 语句 for(auto &c : str) { c = toupper(c); } cout << str << endl; return 0; }
编译运行以上 C++ 代码,输出结果如下
SOME STRING