前言
(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匹配,可以这样修改代码:
只要带上适当的⼤括号,代码的逻辑就会更加的清晰。