for 循环允许您编写一个执行特定次数的循环的重复控制结构。
语法
C++ 中 for 循环的语法:
for ( init; condition; increment ) { statement(s); }
下面是 for 循环的控制流:
流程图
实例
#include 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)
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循环的变量一样,其作用域仅只于循环的范围。而在":"之后的第二区块,代表将被迭代的范围。
#include #include #include using namespace std; int main() { string str("some string"); // range for 语句 for(auto &c : str) { c = toupper(c); } cout << str << endl; return 0; }
上面的程序使用Range for语句遍历一个字符串,并将所有字符全部变为大写,然后输出结果为:
SOME STRING
2 篇笔记
for语句的基本格式
for (表达式1;表达式2;表达式3) { // 循环体语句 }
for 语句中的三个表达式可部分或全部省略,但两个分号不能省略。
常见的是:将表达式1放在了 for 语句之前,或表达式3放在了循环体中,在 for 语句中就可相应地省略表达式1或表达式3。
如:
for(i=1,s=0; i<=100; i++) { sum += i; }
可写成如下形式:
i=1; sum=0; for ( ;i<=100; ) { sum+=i; i++; } // 等效于while循环
表达式2也可省略,写成:
for (; ;) {…}
此时,系统约定表达式2的值为 1,即恒为真,则等同于:
for (; 1;) {…}
参考自 c++ primer plus
int my_array[5] = { 1, 2, 3, 4, 5 }; // 不会改变 my_array 数组中元素的值 // x 将使用 my_array 数组的副本 for (int x : my_array) { x *= 2; cout << x << endl; } // 会改变 my_array 数组中元素的值 // 符号 & 表示 x 是一个引用变量,将使用 my_array 数组的原始数据 // 引用是已定义的变量的别名 for (int& x : my_array) { x *= 2; cout << x << endl; } // 还可直接使用初始化列表 for (int x : { 1, 2, 3, 4, 5 }) { x *= 2; cout << x << endl; }