迟来的分支语句

简介: 目录1,什么是语句? 1.1表达式语句 1.2函数调用语句 1.3控制语句 1.4复合语句 1.5空语句2,分支语句 2.1 if语句 2.1.1悬空else 2.2 switch语句 2.2.1switch语句中的break 2.2.2default子句

1,什么是语句?

       1.1表达式语句

诸如int a = 10;        int b = 20;       int c = 0;       c = a + b;之类的语句(由表达式加上";"组成。) 其一般形式为:表达式;执行表达式语句就是计算表达式的值和执行副作用。例如:1,x=y+z; a=520;(赋值语句; 2,i++;自增1语句,i值增1。(先运算i再加1) 3,++i;(先增1后运算)等等;


       1.2函数调用语句

1:函数作为表达式中的一项出现在表达式中 如“z=max(x,y)”2:函数作为一个单独的语句 如               “printf("%d",a);”  3:函数作为调用另一个函数时的实参  如“printf("%d",max(x,y));”


       1.3控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语 言有九种控制语句。 可分成以下三类:1. 条件判断语句也叫分支语句:if语句、switch语句;  2. 循环执行语句:do while语句、while语句、for语句;3. 转向语句:break语句、goto语句,continue语句、return语句。


       1.4复合语句

复合语句简称为语句块,它使用大括号把许多语句和声明组合到一起,形成单条语句。语句块与简单的语句不同,语句块不用分号当作结尾。

用括号{}括起来组成的一个语句称复合语句。 在程序中应把复合语句看成是单条语句,而不是多条语句,例如:

image.png

       1.5空语句

image.png

2,分支语句

        2.1  if语句

image.png


image.png


解释一下: 如果表达式的结果为真,则语句执行。 在C语言中 0表示假,非0表示真。


               image.png        

使用if语句时,即使语句列表只有一行,也尽量写出{}   !!!!不为别的,看起来舒服                  

                   2.1.1悬空else

当年写了类似这样的代码时


image.png 


改正:       //适当的使用{}可以使代码的逻辑更加清楚。 //代码风格很重要                   image.png由此可见:else的匹配:else是和它离的最近的if匹配的。                

        2.2  switch语句

switch语句也是一种分支语句。 常常用于多分支的情况。如果我们要输出周一到周日的话,可以选择用if else来完成,但是未免过于繁琐。例如      image.png

那我们写成 if...else if ...else if 的形式太复杂那我们就得有不一样的语法形式这就是switch 语句。

image.png

语句项:

image.png


综上所述,我们在输出周一到周日在采用switch语句时可采用以下代码:                                  image.png

但是此时就会出现一个非常严重的问题,当你在输入数值2时,理想状态下输出星期二,但是星期二到星期日的一并打印出来了,这并不是我们想要看到的结果。此时此刻我们就应该想到应该有这么一个东西可以在你输入数值后,打印相应的回复,并随即跳出语句,即我们想要的输出值。这就是switch的灵魂伴侣  break  !!(详解见下)

                   2.2.1switch语句中的break

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。如: image.png                

image.png

此时此刻,我们不难发现,加入break后,当再次输入2时,只打印了星期2,即我们想要的回复。编程好习惯 :在最后一个 case 语句的后面加上一条 break语句。 (之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)。

                   2.2.2default子句

如果表达的值与所有的case标签的值都不匹配怎么办? 其实也没什么,结构就是所有的语句都被跳过而已。 程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。 但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢? 你可以在语句列表中增加一条default子句,把下面的标签 default: 写在任何一个 case 标签可以出现的位置。 当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。 所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。如:                                                                                                

image.png

相关文章
|
2天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1078 0
|
11天前
|
人工智能 运维 安全
|
10天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
2天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
265 0
|
9天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
758 23
|
2天前
|
缓存 供应链 监控
VVIC seller_search 排行榜搜索接口深度分析及 Python 实现
VVIC搜款网seller_search接口提供服装批发市场的商品及商家排行榜数据,涵盖热销榜、销量排名、类目趋势等,支持多维度筛选与数据分析,助力选品决策、竞品分析与市场预测,为服装供应链提供有力数据支撑。
|
2天前
|
缓存 监控 API
Amazon item_review 商品评论接口深度分析及 Python 实现
亚马逊商品评论接口(item_review)可获取用户评分、评论内容及时间等数据,支持多维度筛选与分页调用,结合Python实现情感分析、关键词提取与可视化,助力竞品分析、产品优化与市场决策。