如何学好C语言判断语句?攻略if语句是第一步

128 阅读6分钟

C语言,是全球使用最多的编程语言。上次我们谈到了switch语句,但在C语言中,if条件构成的选择结构程序很重要。在实际问题中,往往需要对不同变量进行比较,然后分别执行不同的语句。如何使用if语句呢?小编在这里谈一谈if语句基本用法与使用技巧。

![](https://upload-images.jianshu.io/upload_images/24563956-52f64ea41ef4a830.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

一、if语句

在操作符章节中我们学习过问号表达式,也就是当某一个条件表达式是真时,问号表达式的结果为冒号前的结果,当条件表达式是假时,问号表达式的结果为冒号后的结果。这里我们可以分析一下,问号表达式其实是一个条件判断功能表达式,也就是说:

如果条件表达式的值为真:

那么结果为A;

否则:

那么结果为B。

![](https://upload-images.jianshu.io/upload_images/24563956-48fd419be1429b41.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

其实这是一个我们在生活常常需要处理的一种情形,如果……那么……否则……那么……

![](https://upload-images.jianshu.io/upload_images/24563956-10059d2fc2fbc900.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

二、 if语句基本用法

if语句基本用法有如下四种形式,我们以求ab中的最大值为例,分别来看看。

1) 简单的if语句形式

if(某条件)执行某项操作。如图的if语句,即如果a<b,另a=b,使a成为最大值,最后输出

![](https://upload-images.jianshu.io/upload_images/24563956-5689ccee6d2f86b2?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

该语句形式的语义是:如果表达式为真,则执行语句块;否则,将跳过该语句块,执行整个if分支语句后面的其它语句。上述语句块,可以是一条语句,也可以是多条语句组合。

2) if-else语句形式

if(表达式)语句a

else 语句b,即满足表达式时,执行语句a,否则执行语句b

![](https://upload-images.jianshu.io/upload_images/24563956-59d5d6b5cd1b1e19?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

该语句形式的语义是:如果表达式为真,则执行语句块1;否则,执行语句块2。也就是说语句块1和语句块2两者必执行其一。然后,再执行整个if分支语句后面的其它语句。

3) if-else-if语句形式

if(表达式1)语句1

else if(表达式2)语句2

else 语句3

即满足表达式1时,执行语句1,不满足表达式1,但满足表达式2时,执行语句2,都不满足执行语句3

![](https://upload-images.jianshu.io/upload_images/24563956-62b5a67abd315890?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

该语句形式的语义是,如果依次判断各表达式,若表达式为真,就执行对应的语句块,然后跳出整个if分支语句,执行后面的语句;如果前m个表达式均不为真,则会执行语句块n,然后再跳出整个if分支语句,执行后面的语句;也就是整个if分支语句的n个语句块,程序必定会执行其一。

4) if语句嵌套形式

即在if语句内写入其他if语句,如图

![](https://upload-images.jianshu.io/upload_images/24563956-8442d6c7ae705faa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

所谓的if语句嵌套形式是指if语句某一分支里又是一个if语句。通俗的理解是,前三种用法形式里的语句块,又是一个if语句,而且可以是前三种用法形式的任一种。C语言的C89标准指明,编译程序必须最少支持15层嵌套;C99标准把限度提升到127层。不过虽然支持这么多层嵌套,但实际编程应用时,为了保持程序的可读性及简洁程度,应尽量减少嵌套层次。

![](https://upload-images.jianshu.io/upload_images/24563956-5023b8ff479fcab4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

三、 if语句用法技巧

1) 合理调整if分支顺序

在编程应用时,应合理调整if分支顺序,把大概率为真对应情况的语句块直接放在if后面,不要放在else后面。这样做有利于减少程序的判断次数,提高执行效率。

例如,我们把学生成绩分成60分及以上、40-60分、40分以下三个分数段。很显然,及格的学生是大多数,也就是某个学生及格的可能性较大,低于60分较少,低于40分的更少。在编程处理学生成绩的应用时,通常用if-else-if语句形式,就应该把60分及以上的学生处理情况直接放到if语句之后,40-60分段放到else if语句后面,低于40分的情况放到else语句后面处理,这种安排很符合大家的逻辑思维习惯。如果把顺序颠倒,if语句处理40分以下,else if语句处理40-60分段,60分及以上放到else语句后面,无形中增加了成倍的成绩比较次数。

2) else结合问题

C语言if语句编程应用时,应该注意else的配对问题,它始终与最近的未匹配的if相结合。如果不注意该问题,有可能程序执行结果与预期相去甚远。请看下面的例子说明。

if(表达式1)

if(表达式2)

语句块1;

else

语句块2;

上面的例子我们来看,作者的意图是,如果表达式1与表达式2均为真的情况下,执行语句块1;如果表达式1为假,则执行语句块2。这里虽然else与表达式1的if对齐,但它们并不能配对;事实上else是与表达式2的if相结合。实际执行逻辑是:在表达式1为真的情况下,继续判断表达式2,若表达式2为真则执行语句块1,若表达式2为假则执行语句块2。可见与作者的意图相差太远。

要想实现作者意图,解决办法是合理使用“{}”,将上述表达式修改成如下形式即可。

if(表达式1)

{

if(表达式2)

语句块1;

}

else

语句块2;

![](https://upload-images.jianshu.io/upload_images/24563956-46092e4de0519ebb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

3) 避免if/else语句后面加分号“;”

C语言中,分号“;”组成的语句称为空语句,它什么都不做,通常被用来做空循环体。如果不小心在if/else语句后面加了分号“;”,程序执行有可能违背了你的意图,导致意外结果。例如:

if(表达式);

语句块;

本来意图是表达式为真就执行语句块,现在不小心在if后面加了个分号“;”,则上述表达式实际上变成了如下形式:

if(表达式)

;

语句块;

也就是说如果表达式为真,则执行一个空语句。然后再执行语句块。此时上述语句块不再是在表达式为真的条件下执行,而是会无条件的执行。

可见,一个分号“;”误用会带来不可预计的后果。而且,此种错误在程序编译时是发现不了的,不会有任何错误提示。因此,建议大家编程时一定要细心。

![](https://upload-images.jianshu.io/upload_images/24563956-72bb0f13a95c77ae.gif?imageMogr2/auto-orient/strip)

以上就是c语言中if语句的用法是什么的详细内容,如果你想更好的提升你的编程能力,好好学习C/C++编程知识的话!那么你很幸运~

加入C语言/C++企鹅圈,这里还有一些你可能不知道的趣事分享哟。