C语言分支和循环语句详解
在C语言中程序的执行流程并非总是按顺序线性推进。分支语句的核心作用就是让程序能够根据不同的条件选择执行不同的代码块从而实现灵活的逻辑判断。一、if 语句if 是最基础的分支判断工具它通过检查一个条件表达式的真假来决定是否执行后续的代码。- 基础用法仅包含一个条件当条件为真时执行对应代码块为假则直接跳过。- if-else 结构用于处理“二选一”的场景当条件为真时执行 if 块为假时执行 else 块确保两种情况都能被覆盖。- if-else if-else 多分支适用于需要依次判断多个条件的场景程序会按顺序检查每个条件直到找到第一个为真的分支并执行剩余分支将不再判断。使用 if 语句时需要注意条件表达式必须用括号包裹即使分支体只有一行代码也建议用大括号将其包裹这能避免后续修改代码时出现逻辑错误同时不要在 if 的条件括号后误加分号否则会让 if 的执行体变成空语句导致后续代码与判断逻辑脱离。二、switch 语句当需要对一个变量的多个固定取值进行判断时 switch 语句比多层 if-else 结构更清晰、执行效率也更高。- 核心逻辑 switch 后的表达式会与各个 case 后的常量值进行匹配匹配成功则执行该 case 下的代码直到遇到 break 或 switch 语句结束。- case 穿透问题如果 case 分支末尾没有添加 break 程序会继续执行后续所有 case 的代码这既是一个可以利用的特性也很容易引发逻辑错误需要特别留意。- default 分支这是一个可选分支当表达式的值不匹配任何 case 时就会执行 default 中的代码用于处理所有未被明确覆盖的情况。需要注意的是 switch 后的表达式只能是整数类型比如 int 或 char case 后面必须跟常量值不能使用变量。三、分支语句的常见陷阱1. 赋值与比较混淆在 if 的条件中 是赋值操作 才是比较操作。如果误写为 if (a 5) 会将5赋值给变量 a 并且这个表达式永远为真这是初学者最容易犯的错误之一。2. 浮点数直接比较由于浮点数在存储时存在精度误差应避免直接用 来比较两个浮点数是否相等。通常的做法是判断两个浮点数的差值是否小于一个极小的阈值如0.000001。3. switch 表达式类型错误 switch 的表达式必须是整数类型传入浮点数或字符串都会导致编译错误。C语言分支与循环语句详解二循环语句循环语句的作用是让程序能够重复执行一段代码直到满足特定的终止条件是处理批量数据、实现迭代逻辑的核心工具。一、while 循环while 循环是“先判断后执行”的逻辑。它会先检查条件表达式只有当条件为真时才会执行循环体如果初始条件就为假循环体将一次都不会运行。使用 while 循环时必须在循环体内对循环变量进行更新比如让变量自增否则会导致循环条件永远为真陷入无限循环。同时即使循环体只有一行代码也建议用大括号包裹以增强代码的可读性和可维护性。二、do-while 循环do-while 循环是“先执行后判断”的逻辑。它会先执行一次循环体然后再检查条件这意味着无论条件是否成立循环体都至少会执行一次。需要特别注意的是 do-while 语句的末尾必须加上分号这是语法上的硬性要求。这种循环非常适合需要先获取输入再进行验证的场景比如要求用户输入一个符合范围的数字。三、for 循环for 循环将“初始化”“条件判断”和“变量更新”三个步骤整合在同一行结构非常清晰尤其适合已知循环次数的场景。它的执行流程是首先执行一次初始化表达式接着判断条件表达式——如果为真则执行循环体执行完毕后再执行更新表达式然后回到条件判断步骤重复过程如果条件为假则直接退出循环。这种把循环的关键要素放在一起的写法让代码更紧凑也更不容易出错。四、循环控制语句- break用于立即跳出当前所在的循环或 switch 语句。在嵌套循环中它只会跳出最内层的循环不会影响外层循环的执行。- continue用于跳过当前循环的剩余代码直接进入下一次循环的条件判断环节。它不会终止整个循环只是让当前这一次迭代提前结束。五、循环的常见问题1. 无限循环通常是因为循环条件永远为真或者循环变量没有被正确更新。可以通过检查循环条件和变量更新逻辑来排查。2. 循环边界错误比如在遍历数组时循环的结束条件设置错误导致访问了数组以外的内存地址引发程序崩溃。3. 嵌套循环效率问题过多或过深的嵌套循环会显著降低程序的执行效率在处理大量数据时需要特别注意优化。

相关新闻

嵌入式Linux UVC驱动调试实战:从设备枚举到安卓Camera打通

嵌入式Linux UVC驱动调试实战:从设备枚举到安卓Camera打通

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:22:28 阅读更多 →
从决策记录到自动化流水线:architecture-decision-record 仓库“持续集成”ADR 示例的完整解读与落地实践

从决策记录到自动化流水线:architecture-decision-record 仓库“持续集成”ADR 示例的完整解读与落地实践

【免费下载链接】architecture-decision-record Architecture decision record (ADR) examples for software planning, IT leadership, and template documentation 项目地址: https://gitcode.com/gh_mirrors/ar/architecture-decision-record 点击查看 免费下载 …

2026/10/13 2:21:28 阅读更多 →
基于SpringBoot+Vue的前后端分离青年公寓服务平台设计与部署全解析

基于SpringBoot+Vue的前后端分离青年公寓服务平台设计与部署全解析

前后端分离的青年公寓服务平台,这类项目在最近几年的毕业设计和个人项目里出现频率相当高。用SpringBoot扛后端、Vue写前端界面、MyBatis管数据持久层、MySQL存业务数据,这套组合基本就是当前主流的全栈技术栈标配。我接触过不少类似的项目源码&#xff…

2026/10/13 2:21:28 阅读更多 →

最新新闻

孩子专注力不足怎么办:从环境到方法,家长可操作的完整指南

孩子专注力不足怎么办:从环境到方法,家长可操作的完整指南

孩子一写作业就抠橡皮、发呆、上厕所,老师隔三差五反馈上课走神,可一玩起乐高、看起动画片又比谁都专注。这是我在后台被问到最多的育儿问题之一。专注力不足,听起来像是孩子的问题,但我在接触了大量家庭后发现,多数情…

2026/10/13 3:01:43 阅读更多 →
从Java UI到ArkUI:鸿蒙多端适配与声明式开发实战

从Java UI到ArkUI:鸿蒙多端适配与声明式开发实战

一个明显的感觉是,手机、平板、手表基本是"三个项目三套代码"。虽然底层都是 Java,但 UI 层几乎没法复用——手表的圆形屏幕、平板的横竖屏适配、折叠屏的展开收起,每个场景都要单独处理。项目里多一套设备,就意味着多一…

2026/10/13 3:01:43 阅读更多 →
炒股注意事项:从买卖点到心态纪律的完整交易体系

炒股注意事项:从买卖点到心态纪律的完整交易体系

做股票交易这行,时间越长越会发现一个道理:真正拉开人与人差距的,往往不是谁更聪明、谁的消息更灵通,而是谁更能守住交易里的那些“注意事项”。这行里有一句话流传很广:“会买的是徒弟,会卖的是师傅&#…

2026/10/13 3:01:43 阅读更多 →
Hadoop MapReduce 核心流程:从 Input 到 Reduce

Hadoop MapReduce 核心流程:从 Input 到 Reduce

MapReduce 是分而治之的分布式计算模型,分为两大阶段:Map 阶段(映射)和Reduce 阶段(归约),中间由 Shuffle 洗牌过程衔接。整体流程:输入分片 → Map任务 → Shuffle(分区…

2026/10/13 3:01:43 阅读更多 →
artcraft式创作工具:从意图解析到资产生成的工程实践

artcraft式创作工具:从意图解析到资产生成的工程实践

1. 从“artcraft”这个名字说起:它到底想解决什么问题第一次看到“artcraft”这个词,我脑子里蹦出来的不是某个具体工具,而是一种很朴素的组合感——art 加上 craft,艺术加手艺。这两个词放在一起,本身就带着一种张力&…

2026/10/13 3:01:43 阅读更多 →
精读原型网络:从少样本学习到类均值分类器的度量学习基石

精读原型网络:从少样本学习到类均值分类器的度量学习基石

最近在整理少样本学习(few-shot learning)方向的文献时,我重新精读了《Prototypical Networks for Few-shot Learning》这篇论文。它发表于2017年底,属于度量学习路线里绕不开的基石工作。整篇论文的思想非常朴素:用每…

2026/10/13 3:00:43 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →