if与else的多种嵌套关系

本文介绍了C语言的基本结构,重点讲解了if-else语句的概念、语法、嵌套使用以及处理悬空else问题的方法,包括程序块的概念和scanf_s的安全使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

(1)C语言是结构化的程序设计语言。

C语言的三种基本程序结构分别是:
  • 顺序结构:按照程序顺序执行
  • 选择结构:根据判断结果选择分支方向
  • 循环结构:指有一个循环体,可以根据判断条件决定循环多少次

 而if-else语句就是顺序语句

那什么是语句?

C语言中由一个分号(;)隔开的就是一条语句。

(2)if语句的语法结构

l

表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。

及在C语⾔中,0为假,⾮0表⽰真,

例一:了解if-else结构

运行该程序,将不会有打印结果;如果在此基础上加上

则运行结果为:

未成年

例二:一分支多语句

上⾯的代码,你会发现输⼊的值不管是>=18还是<18,"可以谈恋爱了"都会输出。

因为 if 语句只能控制⼀条语句,若要控制两条如何做呢?那就要使⽤ {} 将代码括起来

if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句

例三:if-slse结合

以例二为例,当ega>=18时成年了并且可以早恋。其中缺少了未成年并且不能早恋的情况。我们就可以用else来完成。

其中else 后使⽤{}控制多条语句-这个块也叫:程序块,或者复合语句

scanf_s:为什么要这样写,因为我们使用vs环境时系统会认为scanf不安全并报错,所以vs为了安全不采用scanf。 

(3)if语句的嵌套 

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

⽐如:要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数。请看如下代码:

 上图中蓝⾊背景的代码就是嵌套在前⾯的 else ⼦句中的,构成了嵌套的if语句。

其中对于 else if来说想用几个用几个,并无太多条件束缚

再⽐如: 输⼊⼀个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:⾮正数。

上图中蓝⾊背景的代码就是嵌套在前⾯的 else ⼦句中的,构成了嵌套的if语句。

(4)悬空else问题

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

 例一:

对于初学if语句的来说上来以判断 a 是0,不等于1,那就执⾏ else ⼦句,打印 haha 但是当你去运⾏代码,输出的结果是:啥都不输出。

为什么呢? 这就是悬空 else 的问题,如果有多个 if 和 else ,可以记住这样⼀条规则

else 总是跟最接近 的 if 匹配。

上⾯的代码排版,让 else 和第⼀个 if 语句对⻬,让我们以为 else 是和第⼀个if匹配的,当 if 语句不成⽴的时候,⾃然想到的就是执⾏ else ⼦句,打印 haha ,但实际上 else 是和第⼆个 if 进⾏匹配的,这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不 成⽴,嵌套 if 和 else 就没机会执⾏了,最终啥都不打印。 如果代码改成下⾯这样就更加容易理解了。

或者如果我们希望else确实和第⼀个if匹配,可以这样修改代码:

 

 

只要带上适当的⼤括号,代码的逻辑就会更加的清晰。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值