基本结构
首先C语言程序由三种基本结构形成
1顺序结构:按照程序顺序执行
2选择结构:根据判断结果选择分支方向
3循环结构:给与一个循环体,可根据判断条件决定循环多少次
而if语句则是用来实现选择结构(分支结构)的一种分支语句
if语句的分支形式
1,单分支(最基本形式)
1 if(条件表达式)--------执行条件
2 statement 1--------执行
例如:
2,双分支(即if···else···)
1 if(表达式1)
2 statement 1
3 else
4 statement 2
当表达式1的结果为假(0)时,执行else中的statement 2.
例如:
3,多重分支(本人认为“灰常”重要)
多重判断的实现需要if语句的嵌套,即if else语句中else 与另一个if连用,并且我将多重分支的逻辑总结为两大类:
1,并列类:每个表达式并行存在,其中一个为真时执行
2,前提类:由if(表达式)构成的一个个前提进行分支的局部限定
这里有两个图解帮助理解
并列类:
前提类:
并列类if代码格式
1 if(条件表达式1)----执行条件
2 statement 1-----执行
3 else if(条件表达式2)
4 statement 2
5 else if (条件表达式3)
6 statement 3
7.......
. .......
n return 0
例如
我们需要注意一个点,if语句中if和else一般都只能控制1条语句,
即图中任意一条printf(“薪资水平”),如果我们想要一条if语句控制多条语句则应该用“{}”(大括号)将代码括起来,实现控制多条语句目的
同时通过养成写完if()条件后加大括号{}的习惯,可以使我们的代码更有条理更清楚,可以让我在以后写复杂if语句时减少报错与失误
以下是if语句加上{}的代码展示:可以很清楚看到薪资10000时执行的多条语句
前提类if代码格式
1 if(条件表达式1)------大前提
2 if(条件表达式2)------小前提
3 statement 2------执行
4
例如
上图中便是一个很典型的前提类,由“任意两边之和大于第三边”为大前提,“任意两边相等”为此成立三角形大前提下的一个小前提。
4悬空else问题
当面对悬空else时,我们需要记住:当存在多个if和else时,else 总是跟最接近 的 if 匹配。
希望下面这个列子能帮你理解什么是else悬空
很多人看见给a赋值为0后,直接开始判断a不等于1,认为程序执行else语句打印“haha”,但结果时什么都没有打印。为什么呢?此种情况便是else悬空问题。因为else跟第一个if是对齐的,所以我们会觉得else和第一个if匹配,但回到我先开始讲的那个原则就可以知道此时else是跟它最近的那个if(b==2)匹配的,所以结果为:什么都不输出.
如果我们想要很清楚的表现else与if的匹配关系可以像这样使用大括号{},使我们的代码逻辑鲜明
5总结
我相信各位在看完后不难理解if语句的相关逻辑,但在if的多重分支书写时我们还是会出现很多问题,所以我再次推荐大家使用{}大括号来规范化,逻辑化地展现我们的if语句,同时减少代码逻辑出错
这便是紫薇君对于if的一点拙见,如果觉得写得不错的话留下你的点赞再走吧!