目录
一、本节学习内容概要图
二、前言
三、for循环是什么
四、for循环的基本语法
4.1 基本结构
(1)初始化
(2)条件
(3)迭代
4.2 for循环的执行流程
4.3 示例分析
(1)第1轮
(2)第2轮
(3)第10轮
(4)下一次判断
五、continue 与 break 的区别
5.1 continue:结束本次循环,进入下一次
5.2 break:直接结束整个循环
5.3 示例输出分析
(1)if (i % 2 == 0) continue;
(2)cout << i << " ";
(3)if (i > 50) break;
六、嵌套 for 循环
6.1 什么是嵌套循环
6.2 示例分析
(1)第一轮外层:i = 0
(2)第二轮外层:i = 1
(3)第三轮外层:i = 2
6.3 嵌套循环的使用场景
(1)二维数组遍历
(2)打印图形
(3)图像像素遍历
(4)网格地图搜索
七、for 的无限循环写法
7.1 无限循环的语法
7.2 如何退出无限循环
7.3 示例分析
八、总结
8.1 for 的标准结构
8.2 执行顺序
8.3 continue 和 break 的区别
8.4 for 可以嵌套
8.5 for 可以写成无限循环
一、本节学习内容概要图
二、前言
在前面的内容中,我们已经学习了if、变量、枚举、main函数参数等基础知识。
而在实际开发中,很多任务并不是“执行一次就结束”,而是需要重复处理。
比如:
- 批量处理图片
- 遍历视频帧
- 处理消息队列
- 遍历数组、字符串、容器
- 图形渲染中的主循环
- 游戏或三维程序中的持续刷新
这时候,就需要用到循环语句。
在 C++ 中,循环主要有三类:
forwhiledo while
而for循环是最常用、最经典的一种。
因为它特别适合“已知循环次数”或者“按规律迭代”的场景。
三、for循环是什么
for循环本质上就是一种“按条件重复执行代码块”的语法。
它特别适合下面这种情况:
- 先定义一个循环变量
- 每次循环判断条件是否成立
- 条件成立就执行代码
- 执行完后自动更新循环变量
- 再继续判断,直到条件不成立为止
最典型的例子就是:
for (int i = 0; i < 10; i++) { cout << "i = " << i << endl; }这段代码的意思就是:
- 先定义
i = 0 - 只要
i < 10就继续执行 - 每执行完一次,
i++ - 最终输出
0~9
所以,for循环非常适合做“有规律的重复任务”。
四、for循环的基本语法
4.1 基本结构
for循环的标准写法如下:
for (初始化; 条件; 迭代) { 循环体; }也可以写成这种理解方式:
for([初始化]; [条件]; [迭代]) { [true代码块] }这里三部分的含义分别是:
(1)初始化
循环开始前只执行一次。
例如:
int i = 0;表示定义循环变量,并给它一个初始值。
(2)条件
每一轮循环开始前都要判断一次。
例如:
i < 10如果条件为真,就进入循环体。
如果条件为假,就结束整个循环。
(3)迭代
每次循环体执行完后,执行一次“更新操作”。
例如:
i++表示i每次加 1。
4.2 for循环的执行流程
从你给的流程图来看,for循环的执行顺序非常清晰:
- 开始
- 执行初始化代码
- 进行条件判断
- 如果条件为
true,执行循环体- 执行迭代语句
- 回到条件判断
- 如果条件为
false,结束循环
也就是说:
初始化只执行一次,条件会反复判断,循环体会反复执行,迭代会在每轮循环末尾执行。
这一点非常重要,因为很多初学者会误以为:
- 初始化每次都会执行
- 或者迭代在循环体前执行
实际上都不是。
4.3 示例分析
你代码里的第一个for循环如下:
for (int i = 0; i < 10; i++) { cout << "i = " << i << endl; }执行过程是:
(1)第1轮
- 初始化:
i = 0 - 判断:
0 < 10,成立 - 输出:
i = 0 - 迭代:
i++,变成1
(2)第2轮
- 判断:
1 < 10,成立 - 输出:
i = 1 - 迭代:
i++,变成2
……
(3)第10轮
- 判断:
9 < 10,成立 - 输出:
i = 9 - 迭代:
i++,变成10
(4)下一次判断
- 判断:
10 < 10,不成立 - 循环结束
所以最终输出就是:
五、continue 与 break 的区别
在循环中,continue和break都非常重要,但它们的作用完全不同。
5.1 continue:结束本次循环,进入下一次
continue的作用不是退出整个循环,而是:
跳过本轮后续代码,直接进入下一轮循环。
例如:
for (int i = 0; i < 10; i++) { if (i == 5) continue; cout << i << endl; }当i == 5时:
- 不会执行
cout - 直接跳到本轮末尾
- 然后进入下一轮
因此输出中不会有5。
也就是说,continue是:
当前这一轮不往下执行了,但整个循环还继续。
5.2 break:直接结束整个循环
break的作用是:
立刻结束整个循环,不再继续后面的轮次。
例如:
for (int i = 0; i < 10; i++) { if (i == 5) break; cout << i << endl; }当i == 5时:
- 直接退出整个
for - 后面的
6、7、8、9都不会执行
所以输出只有:
0 1 2 3 4因此:
continue:跳过本次break:终止整个循环
这个区别一定要牢牢记住。
5.3 示例输出分析
示例代码:
for (int i = 0; i < 100; i++) { if (i % 2 == 0) continue; cout << i << " "; if (i > 50) break; }我们来逐步分析。
(1)if (i % 2 == 0) continue;
这句表示:
- 如果
i是偶数 - 直接跳过本轮
- 所以最终只会输出奇数
(2)cout << i << " ";
- 只有奇数才会执行到这里
- 空格间隔
(3)if (i > 50) break;
当输出到51时:
51 > 50成立- 执行
break - 整个循环结束
所以最后输出结果就是:
六、嵌套 for 循环
6.1 什么是嵌套循环
所谓嵌套循环,就是:
在一个循环里面,再写另一个循环。
例如:
for (...) { for (...) { } }外层循环控制“大轮次”,内层循环控制“每一轮里面的小轮次”。
6.2 示例分析
你代码里的嵌套循环如下:
for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cout << i << "-" << j << " "; } cout << endl; }执行逻辑如下:
(1)第一轮外层:i = 0
内层j从0到2:
0-0 0-1 0-2(2)第二轮外层:i = 1
内层再次从0到2:
1-0 1-1 1-2(3)第三轮外层:i = 2
内层再次从0到2:
2-0 2-1 2-2最终输出就是:
6.3 嵌套循环的使用场景
嵌套for在工程里非常常见,比如:
(1)二维数组遍历
(2)打印图形
比如打印矩形、三角形、乘法表等。
(3)图像像素遍历
图片本质就是一个二维像素点阵,经常要用双层循环处理。
(4)网格地图搜索
像机器人、A* 路径规划、地图遍历等场景,也经常会用到双层甚至多层循环。
不过,嵌套层数并不是越多越好。
一般来说:
- 2层很常见
- 3层还能接受
- 超过3层,代码就容易难读难维护
七、for 的无限循环写法
7.1 无限循环的语法
for并不一定非要把三部分都写全。
比如下面这种写法:
for (;;) { }这就是一个无限循环。
为什么会无限?
因为:
- 没有初始化限制
- 没有条件判断为 false 的机会
- 没有自动迭代限制
所以程序会一直循环下去。
这和:
while (true) { }效果类似。
7.2 如何退出无限循环
无限循环本身不是错误,很多工程程序都会故意这样写。
例如:
- 服务器主循环
- 游戏主循环
- 消息处理循环
- 图形渲染循环
- 实时控制系统主循环
但无限循环必须有退出机制,否则程序就会一直跑不完。
最常见的方法就是在循环内部加break:
7.3 示例分析
示例代码:
int index = 0; for (;;) { if (index > 10) break; cout << "index:" << index << endl; index++; }这段代码的执行过程是:
- 一开始
index = 0 - 每次输出一次
index - 然后
index++ - 当
index > 10时退出
所以输出是:
这里很多人会问:
为什么会输出到10,而不是到9?
因为判断条件写的是:
if (index > 10)也就是说:
index == 10时还不会退出- 只有当
index == 11时才退出
所以10仍然会被输出。
这个细节非常值得注意。
八、总结
for循环是 C++ 中最基础、也最常用的循环语句之一。
学会它,不只是为了会写几个例子,更重要的是理解“重复执行”这件事在程序中的通用模式。
这篇内容中,最核心的几点可以总结为:
8.1for的标准结构
for (初始化; 条件; 迭代) { 循环体 }8.2 执行顺序
初始化 → 条件判断 → 循环体 → 迭代 → 条件判断……
8.3continue和break的区别
continue:跳过当前这一次,继续下一次break:直接结束整个循环
8.4for可以嵌套
双层、三层都很常见,但层数越多越要注意可读性和性能。
8.5for可以写成无限循环
for (;;)这在工程主循环中非常常见,但一定要设计退出条件。