C语言分支和循环
C语⾔是结构化的程序设计语⾔这⾥的结构指的是顺序结构、选择结构、循环结构。C语⾔是能够实现这三种结构的。我们可以使⽤ if 、 switch 实现分⽀结构使⽤ for 、 while 、 do while 实现循环结构。在学习分支和循环语句前我们首先来学习下关系运算符、判等运算符和逻辑运算符。一、逻辑表达式1.1关系运算符C语⾔⽤于⽐较的表达式称为“关系表达式”relationalexpression⾥⾯使⽤的运算符就称为“关系运算符”relational operator主要有下⾯4个。• ⼤于运算符• ⼩于运算符• ⼤于等于运算符• ⼩于等于运算符这些运算符在C语言的表达式中产生的结果只有两种是0假非0真。关系运算符可以用于比较整数和浮点数也允许比较混合类型的操作数。关系运算符的优先级低于算术运算符。例如ijk-1意思是ij(k-1)。关系运算符都是左结合的。注意这是个相等运算符这是赋值运算符不要混淆。为防止写成将变量放在等号的右边如果把 误写成 编译器就会报错。另外还需要注意的是i j k在C语言中是合法的但可能不是你所期望的含义。因为运算符是左结合的所以这个表达式等价于ijk,换句话说表达式首先检查i是否小于j然后用比较后产生的结果1或0来和k进行比较。这个表达式并不是测试j是否位于i和k之间正确的表达式应该是ijjk。以后写代码应注意此问题。1.2 判等运算符判等运算符有以下两个和关系运算符一样判等运算符也是左结合的并且产生0假非0真作为结果。• 相等运算符• ! 不相等运算符判等运算符的优先级低于关系运算符。1.3逻辑操作符 , || , 逻辑运算符提供逻辑判断功能⽤于构建更复杂的表达式主要有下⾯三个运算符。• ! 逻辑取反运算符改变单个表达式的真假。• 逻辑与运算符就是并且的意思两侧的表达式都为真则为真否则为假。• || 逻辑或运算符就是或者的意思两侧⾄少有⼀个表达式为真则为真否则为假。短路计算运算符和运算符||都对操作数进行“短路”计算。也就是说这些运算符首先计算出左操作数的值然后计算右操作数如果表达式的值可以仅由左操作数的值推导出来那么将不计算右操作数的值。如(i ! 0) (j / i 0)为了得到此表达式的值首先必须计算表达式i ! 0的值如果i不等于0那么需要计算表达式j / i 0的值从而确定整个表达式的值为0或非0。如果计算出i ! 0等于0时整个表达式肯定为假就不必计算后面表达式的值了。1.4条件操作符条件操作符也叫三⽬操作符需要接受三个操作数的形式如下条件操作符的计算逻辑是如果exp1为真exp2计算计算的结果是整个表达式的结果如果exp1为假exp3计算计算的结果是整个表达式的结果。二、选择语句2.1 if的语法形式判断表达式的值如果结果不为0则语句执行否则语句不执行。2.2 elseif表达式 语句1 else 语句2当表达式的值为非0的时候执行语句1当表达式的值为0的时候执行语句2。默认在 if 和 else 语句中默认都只控制⼀条语句。2.3 嵌套if在 if else 语句中 else 可以与另⼀个 if 语句连⽤构成多重判断。以上就是嵌套if语句的语法有了嵌套if语句就可以完成更多复杂逻辑的判断。2.4悬空else问题当if语句嵌套时应当心“悬空else”的问题。上面的else子句究竟属于哪一个if语句呢缩进格式暗示它属于最外层的if语句。然而C语言遵循的规则是else子句应该属于离它最近的且还未和其他else匹配的if语句。然而从规则看它是和内层的if匹配。在上例中else子句要和外层if匹配需在外层if表达式后加上{ 内层if}如下图所示2.5 switch语句在日常编程中常常需要把表达式和一系列值进行比较从中找出当前匹配值虽然级联式if可以达到目的但C语言还提供了switch作为if级联的替换。case 1: 这样用来表示程序跳转的标识称为标签标签的值必须为常量不可为变量程序跳转到该标签后会顺序执行其后的语句执行break语句后程序就跳出switch语句继续执行switch后面的语句。在switch后的表达式中的值无法匹配代码中的case语句的时候这时候要不要做处理要不就得在switch语句中加入default子句。在switch语句中case语句和default语句是没有顺序要求的只要你的顺序是满足实际需求就可以。三、循环控制语句C语言提供了do...while、while和for三种循环语句。3.1 do...while语句3.1.1 do while的语法do while循环是先直接进入循环体执行循环语句然后再执行while后的判断表达式表达式为非0就会进行下一次表达式为0则不再继续循环如下图执行流程。3.2 while语句while语句的格式while(表达式) 语句首先上来就是判断表达式表达式的值为0循环直接结束表达式的值不为0则执行语句语句执行完成后再继续判断是否进行下一次判断。3.3 for循环3.3.1语法形式for循环是三种循环中使用最多的for语句非常适合应用在使用“计数”变量的循环中其语法形式如for(声明或者表达式1;表达式2;表达式3)语句表达式1用于循环变量的初始化表达式2用于循环结束条件的判断表达式3用于循环变量的调整3.3.2for循环的执行流程首先执行表达式1初始化循环变量接下来就是执行表达式2的判断部分表达式2的结果0则循环结束表达式2的结果如果!0则执行循环语句循环语句执行完后再去执行表达式3调整循环变量然后再去表达式2的地方执行判断表达式2的结果是否为0决定循环是否继续。3.3.3 for语句的惯用法•从0向上加到n-1for(i0;in;i){ 语句;}•从1向上加到nfor(i1;in;i){语句;}•从n-1向下减到0for(in-1;i0;i--){语句;}•从n向下减到1for(in;i0;i--){语句;}四、break和continue语句在循环执行的过程中如果某些状况发生的时候需要提前终止循环这是非常常见的现象。C语言中提供了break和continue两个关键字就是应用到循环中的。• break的作用是用于永久的终止循环只要break被执行直接就会跳出循环继续往后执行。• continue的作用是跳过本次循环中continue后边的代码在for循环和while循环中有所差异的。4.1 while循环中的break和continue4.1.1break例子从例子打印可以看出当n等于3的时候循环在break的地方终止不再打印不再循环所以break的作用就是永久的终止循环只要break被执行break外的第一层循环就终止了。4.1.2 continue例子到这里我们就能分析出来continue可以帮助我们跳过某一次循环continue后边的代码直接到循环的判断部分进行下一次循环的判断如果调整是在continue后边的话可能会造成死循环。4.2 for循环中的break和continue4.2.1 break例子for其实和while循环中的break一样只要执行到了break循环就彻底终止。4.2.2 continue例子在for循环中continue的作用是跳过本次循环中continue后的代码直接去到循环的调整部分。

相关新闻

多款二维码制作工具真实测评,个人日常、商家营销都能找到合适的

多款二维码制作工具真实测评,个人日常、商家营销都能找到合适的

不管是日常分享链接、留存文字资料,还是门店活动宣传、企业巡检登记,二维码都是必不可少的工具。市面上制作二维码的平台五花八门,功能侧重差别很大。下面整理五款不同定位的工具,有本地轻量软件,也有国内外热门线上站…

2026/6/20 15:59:22阅读更多 →
2026年API聚合平台横评实测:哪一家是企业级首选

2026年API聚合平台横评实测:哪一家是企业级首选

引言:API聚合平台为何成为巨头新战场? 近年来,一个显著的趋势是,以中国移动、中国电信为代表的通信巨头,纷纷将战略目光投向了“API聚合平台”或“AI模型中转站”这一新兴赛道。移动推出了“移动MOMA”,电信…

2026/6/20 15:59:22阅读更多 →
从异常类到 Fault Message,SAP Proxy Runtime 里的业务错误传递机制

从异常类到 Fault Message,SAP Proxy Runtime 里的业务错误传递机制

在 SAP PI / PO 或早期 XI 风格的 Proxy 集成里,接口报错经常被分成两类。一类是技术链路问题,网络不通、Integration Server 地址没认到、接口路由没配好、服务器不可达,这类错误通常由 Runtime 自己抛出来。另一类更贴近业务,消息已经成功到达接收系统,代理类也被调用了…

2026/6/20 15:59:22阅读更多 →
基于Simulink的SIR传染病模型仿真:从微分方程到可视化实现

基于Simulink的SIR传染病模型仿真:从微分方程到可视化实现

1. 从现实到模型:为什么我们需要SIR模型来理解病毒传播最近几年,大家对于“病毒传播”这个词已经不再陌生。无论是新闻里不断变动的感染曲线,还是生活中讨论的防控措施,背后都有一套数学模型在支撑着决策者的判断。这套模型里&…

2026/6/20 17:14:35阅读更多 →
为什么传统监控会失效?构建下一代分布式数据库性能洞察体系

为什么传统监控会失效?构建下一代分布式数据库性能洞察体系

为什么传统监控会失效?构建下一代分布式数据库性能洞察体系 【免费下载链接】oceanbase The Fastest Distributed Database for Transactional, Analytical, and AI Workloads. 项目地址: https://gitcode.com/GitHub_Trending/oc/oceanbase 在分布式数据库的…

2026/6/20 17:14:35阅读更多 →
Windows界面定制终极指南:5分钟打造专属桌面环境

Windows界面定制终极指南:5分钟打造专属桌面环境

Windows界面定制终极指南:5分钟打造专属桌面环境 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 还在为Windows 11的新界面感到困扰…

2026/6/20 17:14:35阅读更多 →
从“人工智障“到“智能管家“:如何让小爱音箱真正听懂你的心?

从“人工智障“到“智能管家“:如何让小爱音箱真正听懂你的心?

从"人工智障"到"智能管家":如何让小爱音箱真正听懂你的心? 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gp…

2026/6/20 17:14:35阅读更多 →
LFM2.5-Embedding-350M vs 竞品对比:为什么它是当前最佳的多语言嵌入模型

LFM2.5-Embedding-350M vs 竞品对比:为什么它是当前最佳的多语言嵌入模型

LFM2.5-Embedding-350M vs 竞品对比:为什么它是当前最佳的多语言嵌入模型 【免费下载链接】LFM2.5-Embedding-350M 项目地址: https://ai.gitcode.com/hf_mirrors/LiquidAI/LFM2.5-Embedding-350M 在多语言语义搜索和检索增强生成(RAG&#xff0…

2026/6/20 17:14:35阅读更多 →
CANN/ge GetOutputsSize API文档

CANN/ge GetOutputsSize API文档

GetOutputsSize 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow…

2026/6/20 17:09:35阅读更多 →
【课程设计/毕业设计】基于 Web 的高校县志馆藏信息综合管理系统设计与实现 基于Django的青岛滨海学院特色文献捐赠流转管理系统的设计与实现【附源码、数据库、万字文档】

【课程设计/毕业设计】基于 Web 的高校县志馆藏信息综合管理系统设计与实现 基于Django的青岛滨海学院特色文献捐赠流转管理系统的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/20 0:02:40阅读更多 →
MC68HC908RF2A定时器PWM生成原理与实战:无缓冲与缓冲模式详解

MC68HC908RF2A定时器PWM生成原理与实战:无缓冲与缓冲模式详解

1. 项目概述与核心价值在嵌入式开发,尤其是电机驱动、LED调光、开关电源这些需要精确控制“能量”的领域,脉冲宽度调制(PWM)技术是工程师手中的一把瑞士军刀。它的本质很简单:用一个固定频率的方波,通过改变…

2026/6/20 0:02:40阅读更多 →
在银河麒麟V10桌面(2205版本)上实战部署软RAID 1:从模块黑名单到自动挂载

在银河麒麟V10桌面(2205版本)上实战部署软RAID 1:从模块黑名单到自动挂载

1. 银河麒麟V10桌面系统与软RAID 1基础认知 第一次在银河麒麟V10桌面上折腾软RAID 1时,我踩了不少坑。这个国产操作系统基于Linux内核,但2205版本对软RAID模块做了特殊处理,需要额外操作才能正常使用。软RAID 1其实就是磁盘镜像技术&#xff…

2026/6/20 0:02:40阅读更多 →