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

【C语言】03.分支结构

本文用以介绍分支结构,主要的实现方式为if语句和switch语句。

一、if语句

1.1 if语句

if (表达式)语句

表达式为真则执行语句,为假就不执行。在C语言中,0表示假,非0表示真.下图表示if的执行过程:
在这里插入图片描述

1.2 else语句

当判断一个条件不成立时,可以在去走else语句。

if(表达式)语句
else语句

默认在ifelse语句中都是只包含1条语句。如果要同时控制多条语句,那就要使用{ }

1.3 嵌套语句

if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断.

1.4 悬空else问题

如果有多个 ifelse ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配

二、关系操作符

C语言中用于比较的表达式称作“关系表达式”,里面的运算符就称作“关系运算符”,主要有如下6个:> < <= >= == != 。关系表达式的结果通常为0或1,表示真假。

注意:相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,不要混淆。

三、条件操作符

条件操作符也叫三目操作符,需要接受三个操作数的,形式如下:

	exp1 ? exp2 : exp3

条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果
exp1 为假, exp3 计算,计算的结果是整个表达式的结果。

四、逻辑操作符 && ,|| ,!

逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符:

4.1 !:逻辑取反运算符(改变单个表达式的真假)在这里插入图片描述

4.2 &&:与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)在这里插入图片描述

4.3||:或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)

在这里插入图片描述

4.4 短路

C语言逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”

五、switch 语句

5.1 switch 语句

除了 if 语句外,C语言还提供了 switch 语句来实现分支结构。
switch 语句是⼀种特殊形式的if...else 结构,用于判断条件有多个结果的情况。它把多重的 else if 改成更易用、可读性更好的形式。

switch (expression) 
{case value1: statementcase value2: statementdefault: statement//1. case 和后边的数字之间必须有空格//2. 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。
}

上面代码中,根据表达式 expression 不同的值,执行相应的 case 分支。如果找不到对应的值,就执行 default 分支。
注:
• switch 后的 expression 必须是整型表达式
• case 后的值,必须是整形常量表达式

switch 语句也是分支效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执行,有可能执行其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。

5.2 default 语句

在使用 switch 语句的时候,我们经常可能遇到⼀种情况,比如 switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default 子句。

在 switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。不过我们通常是把 default ⼦句放在最后处理的。

http://www.lryc.cn/news/365827.html

相关文章:

  • uniapp手机屏幕左滑返回上一页支持APP,H5
  • 【Java毕业设计】基于JavaWeb的洗衣店管理系统
  • 使用sqlldr向oracle导入大量数据
  • Milvus LIKE操作符
  • iQOO neo 5精简内置组件
  • 为什么给网站安装SSL证书之后还是有被提示不安全?
  • 创建Frame单例,实现WPF页面跳转
  • 正宇软件助力江西数字人大建设,高效解决群众“急难愁盼”问题
  • 打造AIPC轻量化方案 360AI浏览器及360AI搜索全新发布
  • 《effective c++》学习笔记
  • 11.盛水最多的容器
  • 通过在idea上搭建虚拟hadoop环境使用MapReduce做词频去重
  • AI技术变革与企业服务创新
  • 探秘Facebook:社交媒体的未来之路
  • rust的类型转换和一些智能指针用法(四)
  • 探索大模型技术及其前沿应用——TextIn文档解析技术
  • Java HashMap 扩容机制深度解析
  • 一、Electron 环境初步搭建
  • ffmpeg编码器编码元数据的过程以及编码前后的差异
  • AB测试学习(附有相关代码)
  • 用idea将java文件打成jar包
  • Ansible——group模块
  • Sql注入-报错注入
  • pyqt 回车触发两次editingFinished的解决办法
  • 爬取股票数据python
  • 每日新闻掌握【2024年6月4日 星期二】
  • 智谱AI 发布最新开源模型GLM-4-9B,通用能力超Llama-3-8B,多模态版本比肩GPT-4V
  • 从写简历到谈薪资的最全教程
  • Vue3 响应式API:高级函数(二)
  • 『大模型笔记』什么是提示词注入(Prompt Injection)攻击?