掌握 C++ for 循环:语法、流程图、范围循环与实战模式
C++ for 循环完全指南
循序渐进掌握 C++ for 循环:经典三段式语法、执行流程、范围-based 循环、无限循环与实战求和模式。
循环让代码重复执行。例如打印 100 次消息,用循环比写 100 行 print 高效得多。
C++ 三种循环:
for循环while循环do...while循环
本文聚焦 for 循环。
经典 for 循环语法
for (initialization; condition; update) {
// 循环体
}
initialization:初始化变量,仅执行一次condition:真则执行循环体,假则终止循环update:更新变量,再次检查条件
条件表达式详见 C++ 关系与逻辑运算符。
for 循环流程图

示例 1:打印 1 到 5
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 5; ++i) {
cout << i << " ";
}
return 0;
}
输出
1 2 3 4 5
执行步骤表:
| 迭代 | 变量 | i <= 5 | 动作 |
|---|---|---|---|
| 1 | i=1 | true | 打印 1,i→2 |
| 2 | i=2 | true | 打印 2,i→3 |
| 3 | i=3 | true | 打印 3,i→4 |
| 4 | i=4 | true | 打印 4,i→5 |
| 5 | i=5 | true | 打印 5,i→6 |
| 6 | i=6 | false | 循环终止 |
示例 2:文本重复 5 次
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 5; ++i) {
cout << "Hello World! " << endl;
}
return 0;
}
输出
Hello World! Hello World! Hello World! Hello World! Hello World!
示例 3:前 n 自然数求和
#include <iostream>
using namespace std;
int main() {
int num, sum = 0;
cout << "Enter a positive integer: ";
cin >> num;
for (int i = 1; i <= num; ++i) {
sum += i;
}
cout << "Sum = " << sum << endl;
return 0;
}
输出
Enter a positive integer: 10 Sum = 55
循环拆解:
int i = 1:初始化i <= num:条件++i:每轮递增
当 i 变为 11,条件为假,sum = 0+1+...+10 = 55。
C++11 范围-based for 循环
专为容器(数组、vector、list 等)设计,语法:
for (变量 : 容器) {
// 循环体
}
每次迭代将容器下一元素赋给变量。
示例 4:遍历数组
#include <iostream>
using namespace std;
int main() {
int num_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (int n : num_array) {
cout << n << " ";
}
return 0;
}
输出
1 2 3 4 5 6 7 8 9 10
范围循环自动处理边界,无需手动管理索引,更安全、更简洁。
无限 for 循环
条件永真则无限执行:
for (int i = 1; i > 0; i++) {
// 永不停止
}
有意无限循环常用于服务器主循环;无意则是 Bug。
for 循环实战模式速查
| 模式 | 代码骨架 | 适用场景 |
|---|---|---|
| 正向遍历 | for (int i=0; i<n; ++i) | 数组/容器索引访问 |
| 反向遍历 | for (int i=n-1; i>=0; --i) | 删除元素、逆序处理 |
| 步长控制 | for (int i=0; i<n; i+=step) | 跳跃采样、分组处理 |
| 多变量控制 | for (int i=0,j=n-1; i<j; ++i,--j) | 双指针、对称处理 |
| 范围循环(只读) | for (const auto& x : container) | 遍历只读,避免拷贝 |
| 范围循环(修改) | for (auto& x : container) | 原地修改元素 |
常见陷阱与避坑
- 无符号类型反向循环:
for (size_t i=n-1; i>=0; --i)永真(size_t无符号,-1变巨大正数)。修正:for (int i=n-1; i>=0; --i)或for (size_t i=n; i-->0;) - 循环变量作用域泄露:C++98 变量泄露到外层;C++11 起
for (int i...)变量限制在循环内。 - 范围循环隐式拷贝:
for (auto x : v)拷贝元素,大对象用const auto&或auto&。 - 修改容器大小:范围循环中
push_back等导致迭代器失效,改用索引循环或收集后批量操作。
下一教程将讲解 while 与 do...while 循环。
C语言