c 语言 ifelse 语句是程序里面最基础的双分支选择结构,作用就是根据一个条件表达式的真假,二选一执行对应的代码块,条件成立就执行 if 后面的代码,条件不成立就执行 else 后面的代码,它可以让程序不再是从头到尾顺序执行,而是根据运行时的数据动态选择执行路径,是所有分支逻辑的核心基础结构,写业务判断数值大小判断登录状态判断区间筛选都离不开这个结构。if 后面括号里面写条件表达式,表达式运算结果为非零就判定为真,数值零就判定为假,else 不能单独出现,必须和前面最近的 if 配对,这是初学者最容易踩坑的关键点,多层判断的时候还可以继续追加 else if,扩展成多分支结构,不再局限只有两条分支。
语法基础
ifelse 语句完整基础语法结构
if (条件表达式)
{
条件成立执行的代码
}
else
{
条件不成立执行的代码
}
补充说明
大括号可以省略,但是省略之后默认只归属紧跟的第一条语句,后面多行代码不会纳入分支内部,这种写法非常容易产生逻辑错误,正式编码建议全部写上大括号,提升可读性。
条件表达式可以是关系表达式逻辑表达式,也可以直接写变量或者常量,只要最终结果非零就为真。
执行流程
程序运行先计算括号内条件表达式的值
结果为真 进入 if 分支,执行大括号内部代码,执行完成之后跳过 else 部分,继续往下执行后续代码
结果为假 直接跳过 if 分支内部代码,进入 else 分支执行代码,执行完毕继续运行后面程序
整个过程只会选中其中一条分支执行,不会 if 和 else 两段代码同时运行。
扩展多分支写法
如果判断选项超过两种,就使用 else if 串联,形成 if else if else 链式结构,从上到下依次判断,一旦某个条件满足,执行对应的代码块,剩下所有分支直接全部跳过,最后的 else 可以省略,代表所有前面条件都不满足的时候不做任何操作。
对比表格
结构类型 特点 适用场景
基础 ifelse 只有两种互斥结果 二选一判断
if else if else 多个条件依次匹配 多区间分类判断
单独 if 没有 else 只处理成立情况,不成立不操作 可选动作判断
常见坑点
第一 else 悬空匹配,else 永远匹配离它最近还没有配对的 if,缩进不会影响配对关系,很多人看缩进误以为配对外层 if,实际逻辑出错
第二 条件里面误写赋值号等于号,把双等号写成单等号,单等号是赋值操作,表达式结果就是被赋值的值,几乎永远为真,逻辑完全错乱
第三 分支内部多条语句没有加大括号,只有第一句受 ifelse 控制,其余语句无条件执行
第四 浮点数直接用等于判断,因为精度误差,判断结果不稳定
【常见问题】
问题 1 c 语言 ifelse 语句里面 else 能不能单独写出来不用搭配 if
回答 1 c 语言 ifelse 语句中的 else 不能单独使用,else 必须依附前面已经存在的 if 进行配对,单独书写 else 编译会直接报错,它的含义就是 if 条件不成立的时候的备选分支。
问题 2 c 语言 ifelse 语句多层嵌套的时候缩进会不会改变 else 的配对对象
回答 2 c 语言 ifelse 语句多层嵌套场景下,缩进仅仅是排版显示,不会改变 else 的配对规则,else 依旧匹配距离它最近的未配对 if,想要改变配对必须添加大括号划分代码块。
问题 3 c 语言 ifelse 语句可以同时执行 if 代码和 else 代码吗
回答 3 c 语言 ifelse 语句是互斥分支,同一轮运行条件只会有一个结果,if 成立就不会跑 else,else 执行就代表 if 条件为假,两段代码不能同时执行。
【免责申明】
本文内容仅用于 c 语言基础知识学习参考,代码示例仅用于原理演示,实际项目开发请结合业务规范做好边界判断,因编码逻辑错误造成程序运行异常,相关风险由使用者自行承担。


