news 2026/4/15 20:38:15

C++零基础到工程实战(4.1):for循环语法分析与实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++零基础到工程实战(4.1):for循环语法分析与实战

目录

一、本节学习内容概要图

二、前言

三、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++ 中,循环主要有三类:

  • for
  • while
  • do 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循环的执行顺序非常清晰:

  1. 开始
  2. 执行初始化代码
  3. 进行条件判断
  4. 如果条件为true,执行循环体
  5. 执行迭代语句
  6. 回到条件判断
  7. 如果条件为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 的区别

在循环中,continuebreak都非常重要,但它们的作用完全不同。


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

内层j02

0-0 0-1 0-2

(2)第二轮外层:i = 1

内层再次从02

1-0 1-1 1-2

(3)第三轮外层:i = 2

内层再次从02

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.3continuebreak的区别

  • continue:跳过当前这一次,继续下一次
  • break:直接结束整个循环

8.4for可以嵌套

双层、三层都很常见,但层数越多越要注意可读性和性能。

8.5for可以写成无限循环

for (;;)

这在工程主循环中非常常见,但一定要设计退出条件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 6:35:08

避开这些坑!用Hugging Face Transformers本地部署Qwen2.5-Max的实战记录

避开这些坑&#xff01;用Hugging Face Transformers本地部署Qwen2.5-Max的实战记录 上周尝试在本地工作站部署Qwen2.5-Max时&#xff0c;我经历了从环境配置到推理测试的全过程&#xff0c;遇到了不少官方文档没提及的"暗礁"。本文将分享实际部署中遇到的7类典型问题…

作者头像 李华
网站建设 2026/4/15 20:01:38

SDMatte赋能在线教育:开发互动课件中的动态元素提取工具

SDMatte赋能在线教育&#xff1a;开发互动课件中的动态元素提取工具 1. 引言&#xff1a;在线教育课件制作的痛点与机遇 在线教育行业近年来发展迅猛&#xff0c;但很多教师仍然面临一个共同困扰&#xff1a;如何把静态的教材插图变成生动有趣的互动内容。传统课件制作中&…

作者头像 李华
网站建设 2026/4/15 19:45:27

GeoJSON.io终极指南:如何用浏览器免费编辑地理数据

GeoJSON.io终极指南&#xff1a;如何用浏览器免费编辑地理数据 【免费下载链接】geojson.io A quick, simple tool for creating, viewing, and sharing spatial data 项目地址: https://gitcode.com/gh_mirrors/ge/geojson.io 你是否曾经需要快速在地图上标记位置、绘制…

作者头像 李华
网站建设 2026/4/15 6:08:16

PyTorch+Transformers环境配置指南:如何避免版本冲突导致的Bug

PyTorchTransformers环境配置指南&#xff1a;如何避免版本冲突导致的Bug 在深度学习项目开发中&#xff0c;PyTorch和Transformers的组合已经成为NLP领域的黄金搭档。但版本兼容性问题就像一颗定时炸弹&#xff0c;随时可能让你的项目陷入困境。想象一下&#xff0c;当你花了两…

作者头像 李华
网站建设 2026/4/15 20:37:13

微信小程序的家园社区生活事务小区物业报修缴费

目录同行可拿货,招校园代理 ,本人源头供货商功能模块概述物业报修功能缴费功能设计技术实现要点扩展功能建议项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块概述 微信小程序的…

作者头像 李华