当前位置: 首页 > news >正文

C 语言循环与自增运算符组合对比分析

一、实验说明

初始变量统一:int i = 5; int n = 0;
i:循环条件变量
n:统计循环体执行次数
核心规则:
后置自增 i++:先取值判断,后变量自增
前置自增 ++i:先变量自增,后取值判断
for / while:先判断条件,再执行循环体
do-while:先执行循环体,再判断条件(循环体至少执行 1 次)

二、四组代码及详细执行流程

案例 1:for 循环 + 后置自增 i++

int i = 5; int n = 0; for(; i < 10; i++) { n++; }

执行流程(先判断,后执行)
判断 5<10 成立 → 执行 n=1,i=6
判断 6<10 成立 → 执行 n=2,i=7
判断 7<10 成立 → 执行 n=3,i=8
判断 8<10 成立 → 执行 n=4,i=9
判断 9<10 成立 → 执行 n=5,i=10
判断 10<10 不成立,循环结束
执行次数:5 次,最终 n=5


案例 2:while 循环 + 前置自增 ++i

int i = 5; int n = 0; while(++i < 10) { n++; }

执行流程(先判断,后执行):
++i=6,判断 6<10 成立 → 执行 n=1
++i=7,判断 7<10 成立 → 执行 n=2
++i=8,判断 8<10 成立 → 执行 n=3
++i=9,判断 9<10 成立 → 执行 n=4
++i=10,判断 10<10 不成立,循环结束
执行次数:4 次,最终 n=4

案例 3:do-while 循环 + 后置自增 i++

int i = 5; int n = 0; do { n++; }while(i++ < 10);

执行流程(先执行循环体,再判断条件):
执行循环体:n=1 → 判断 5<10 成立,i 自增为 6
执行循环体:n=2 → 判断 6<10 成立,i 自增为 7
执行循环体:n=3 → 判断 7<10 成立,i 自增为 8
执行循环体:n=4 → 判断 8<10 成立,i 自增为 9
执行循环体:n=5 → 判断 9<10 成立,i 自增为 10
执行循环体:n=6 → 判断 10<10 不成立,i 自增为 11,循环结束
执行次数:6 次,最终 n=6

案例 4:do-while 循环 + 前置自增 ++i

int i = 5; int n = 0; do { n++; }while(++i < 10);

执行流程(先执行循环体,再判断条件):
执行循环体:n=1 → ++i=6,判断 6<10 成立
执行循环体:n=2 → ++i=7,判断 7<10 成立
执行循环体:n=3 → ++i=8,判断 8<10 成立
执行循环体:n=4 → ++i=9,判断 9<10 成立
执行循环体:n=5 → ++i=10,判断 10<10 不成立,循环结束
执行次数:5 次,最终 n=5

三、结果汇总表

循环类型自增方式循环执行次数
for后置i++5
while前置++i4
do-while后置i++6
do-while前置++i5

四、总结

执行顺序差异:

  • for 和 while 先判条件再执行代码;
  • do-while 必定先执行一次循环体,再做条件判断。

自增规则差异:

  • 前置自增会先改变变量值,更容易让条件失效,减少循环次数;
  • 后置自增先用原值判断,变量延后自增。


实操提醒:循环次数受循环结构和自增写法共同影响,分析代码必须严格遵循执行顺序,不能主观臆断。

http://www.jsqmd.com/news/1272700/

相关文章:

  • LangChain Memory机制详解与应用实践
  • LLM结构化输出对回答多样性的影响与平衡策略
  • 羽毛球剪辑算法集锦
  • C++异常处理终极防线:std::terminate触发机制与二次异常规避
  • 大模型技术全解析:从理论到工程实践
  • 使用JPEXS FFDec逆向分析SWF文件中的自定义加密算法与密钥生成
  • AI大模型应用开发工程师:技术落地与商业价值
  • 微信防撤回补丁失效?逆向工程实战:从内存修改到开源方案
  • Python历史事件爬虫系统:架构设计与实战技巧
  • 平衡二叉树、相交链表与随机指针链表的LeetCode经典题解析
  • AI治理中的技术尊严:易经三原则与动态伦理评估
  • 千笔AI如何解决MBA论文写作五大痛点
  • 上海做宴会厅隔断的厂家哪个好 2026年正规厂家实力与用户口碑 - 工业品牌热点
  • AIGC检测与抄袭检测的技术差异与应用实践
  • TMS320C30同步串口实现异步RS-232通信的软硬件协同设计
  • 你的 self.name = value 为何“绕道”了?——Python 数据描述符的优先级霸权与实例属性消失之谜
  • TI多核SoC处理器追踪实战:从Cortex-A15到EVE的调试与性能优化
  • 智能体技术提升个人效率的实践与优化
  • 白山房屋漏水维修养护贴士(2026 新版):卫生间/厨房/阳台漏水急症随时上门维修 - 北京金修达天津维修部
  • Spring Boot @Value注解配置注入详解与实战
  • 深入解析AM389x高性能MPU:架构、外设与嵌入式开发实战
  • Llama 3.1 405B大模型API调用指南与实战
  • 词向量技术:从Word2Vec到大模型嵌入层的演进与应用
  • 基于YOLO与Django的非机动车头盔检测系统开发实践
  • C++标准演进:从C++14到C++26的核心特性解析
  • 3步降低40%内存占用:SillyTavern性能优化实战指南
  • 天能铂金新能源电池电动车能用吗,避坑指南与口碑实力测评 - 工业品牌热点
  • 用 n 个二进制位表示的带符号整数,通常采用**补码表示法**(这是现代计算机的标准)
  • QMC音频加密格式逆向解析与Python解密工具实现
  • AI如何解决学术论文写作难题