news 2026/9/4 8:16:54

分支循环语句学后总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分支循环语句学后总结

C语言属于结构化的程序设计语言。其中的结构指顺序结构选择结构循环结构。我们可以使用if switch实现分支结构使用for while do while实现循环结构。
分支结构用便于理解的话来讲就是判断表达式是否成立,根据是否成立再去执行不同的语句。表达式成立则为真,表达式不成立则为假。同时在C语言中零为假,非零为真。
1.if语句
在if语句中如果只需要执行一种语句可以直接
if(表达式)
语句
如果需要存在两种可能执行的语句则需要用if… else… 语句。若if后面的表达式结果为真,则进行语句1。若if后面的表达式为假,则执行语句2。
if(表达式)
语句1
else
语句2
有时需要同时执行两条语句,比如if后面紧跟两条语句,需要将两条语句用{}括起来,否则if后面紧跟着的第二条语句无论表达式为真还是假,都会被执行。因为if和else默认都只控制一条语句,else同上。
因为代码的需求多样,所以有时候需要进行两次判断或者多次判断。这时可以使用嵌套if或者嵌套else就是在其执行语句中再加一个{},里面加入一个if… else…语句可以形成多重判断。
如果有多个if和else语句,且没有{}。可以通过一条规则来判断,即else总是跟最接近的if匹配。
2. switch语句
switch语句可以被看作是一种特殊形式的if… else结构,用于判断条件有多个结果的情况。它把多重的if… else语句改成更易用可读性更高的形式。
switch (整型表达式)
{
case 整型常量表达式1:
语句1;
break;
case 整型常量表达式2:
语句2;
break;

default :
语句n;
}
以上面代码为示例,根据整形表达式不同的值执行相应的case分支。如果找不到对应的值就执行default分支。
switchhold表达式必须是整型表达式case后的值必须是整型常量表达式
break的作用是在每一个case语句中的代码执行完成,后通过break跳出这个switch语句。如果某一个case语句的后面没有break,代码会继续往下执行,有可能执行其他case语句中的代码,直到遇到break语句或者switch语句结束。应该根据代码的实际需求来使用break,灵活选择break的位置。
当switch后的表达式中的值无法匹配代码中的case语句时,这时候如果没有default语句就不做处理了,如果有default语句就执行default语句。
3. while循环
while循环比较好理解,可以通过看最后贴的代码示例自行理解。如果还是有不懂的地方可以在下面评论,我会尽我所能为你解答。
4. for循环
for(表达式1;表达式2;表达式3)
语句;
表达式1是用于循环变量的初始化,表达式2用于循环结束条件的判断,表达式3用于对循环变量的调整
首先执行表达式1初始化循环变量,然后执行表达式2的判断部分,表达式2的结果如果!=0则循环结束,表达式二的结果如果等于0,则执行循环语句。语句执行完后再去执行表达式3,对循环变量进行调整。然后再次执行表达式2,根据结果是否为0决定循环是否继续。
for循环和while循环的区别主要是形式上的区别。for循环的三个部分比较集中,便于代码的维护。当代码较多时,while循环会显得过于分散。而while循环相比for循环会更便于理解,适合新手。
5. do while循环
do
语句;
while(表达式);
do while循环在执行时,会直接进入循环体,再判断是否进入下一次循环。
while循环和for循环都是先判断,如果满足条件再进入循环,不满足则直接跳出。do while循环与前两者不同点在于do while循环至少进行一次循环,因为它是直接进入循环体,之后再进行判断是否进行第二次循环。
结语
本篇博客是我对分支结构和循环结构进行了总结,希望可以帮助大家更好地理解分支循环语句中的知识点,同时也希望路过的大佬可以在评论区对我的博客进行捉虫,让我可以及时改正我的错误。其中还有三个会用到的小知识点,我将会在下一篇博客中进行总结,即操作符,go to语句,break和continue语句。我本人更习惯根据具体代码对知识点进行掌握,所以我会将上述语句的代码案例贴在下方供大家参与学习分析,希望可以帮到大家。





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

Cesium POI点聚合实战:从EntityCluster到大数据性能优化

简介:面向Cesium开发者的POI点聚合源码包,解决原生Cesium缺少primitive聚合功能、常需修改EntityCluster源码的问题。方案利用DistanceDisplayCondition属性,按typename字段的层级关系动态计算显隐视距,分为远、中、近三档&#x…

作者头像 李华
网站建设 2026/9/4 6:53:18

STM32HAL库(Free RTOS) 01 实现第一颗灯泡的点亮

本次学习与开发基于CubeMX与HAL库,故我们可以一起学习到CucMX的使用,现在让我们开始点亮灯泡。 一、CubMX的基础配置首先是SYS的配置,一定要选Serial Wire串行线调试,否则烧录一次之后STM32开发板会锁住,我就犯过这个错误。 然后是…

作者头像 李华
网站建设 2026/9/4 17:34:11

从零搭建Arduino无线机械臂:硬件选型、代码解析与自动化实现

1. 先搞清楚这个项目到底能做什么,以及你需要准备什么 看到“复刻Arduino无线控制机械臂”这个标题,很多人第一反应可能是“听起来很酷,但会不会很难?”。这个开源项目的核心价值,就是让你能用一个相对清晰的路径&…

作者头像 李华
网站建设 2026/9/4 8:41:32

真实场景灭火器检测数据集:1618张图像VOC转YOLO训练全流程

简介:面向消防设备识别、智能巡检与安全监控场景的开发者,这份真实拍摄的灭火器图像数据集是训练目标检测模型的开箱即用素材。1618张图片覆盖不同角度、光照、背景及摆放状态,每张均配有标准VOC格式的XML标注,包含边界框与类别信…

作者头像 李华
网站建设 2026/9/2 13:50:15

MATLAB纹理特征提取实战:GLCM、LBP、Gabor等六种方法详解

简介:本资源是一套面向图像处理初学者与科研人员的MATLAB纹理特征提取工具集,聚焦于计算机视觉中的纹理分析核心任务,涵盖GLCM、GLDS、LBP、GMRF、FD和Gabor六类主流方法,适用于遥感图像分类、医学影像识别、工业缺陷检测等实际场…

作者头像 李华
网站建设 2026/9/3 19:42:03

Cesium全球动态光照体积云渲染:Ray Marching实战与性能优化

简介:一套基于体渲染的Cesium全球体积云实现代码,面向需要在大范围三维地球场景中模拟连续云层效果的前端GIS、WebGL开发者。方案结合shadertoy与three.js社区思路,使用Perlin噪声与Worley噪声叠加生成云形,并通过分形布朗运动增强…

作者头像 李华