C语言中的if语句(非常详细)
C语言中的分支判断语句可以细分为 3 种,分别是 if、if else 和 else if 语句,它们可以判断表达式的值,根据该值的情况控制程序流程。

图 1 买彩票
例如上图表达的意思是,买彩票,如果中奖了就买小汽车。
if 语句的一般形式如下:
if 语句的执行过程如下:
if 语句的执行流程图如下图所示:

图 2 if 语句的执行流程图
例如下面的这行代码:
在 if 语句的括号中,不仅可以判断一个变量的值是否为真值,也可以判断表达式的结果是否为真值,例如:
从上面这两行代码可以看到 if 后面的执行部分只是调用了一条语句,如果是两条语句该怎么办呢?这时可以使用花括号标识执行部分使之成为语句块,例如:
if else语句的一般形式如下:
if else 语句的执行过程如下:
if else 语句的执行流程图如下图所示:

图 3 if else语句的执行流程图
在 if 后的括号中判断表达式的结果,如果判断的结果为真值,则执行紧跟在 if 后的语句块中的内容;如果判断的结果为假值,则执行 else 语句后的语句块中的内容。例如:
else if 语句的一般形式如下:

图 4 抽奖流程
使用 else if 语句时,有以下几点说明:
else if语句的执行过程如下:
else if 语句的执行流程图如下图所示。

图 4 else if语句的执行流程图
首先对 if 语句中的表达式 1 进行判断,如果结果为真值,则执行后面跟着的语句块 1,然后跳过 else if 语句和 else 语句;如果结果为假值,那么判断 else if 语句中的表达式 2。如果表达式 2 的值为真值,则执行语句块 2 而不会执行后面的 else if 或者 else 语句。当所有的判断都不成立,也就是表达式的值都为假值时,执行 else 后的语句块。
例如:
C语言if语句
if 语句会对表达式进行判断,根据判断的结果决定是否进行相应的操作。
图 1 买彩票
例如上图表达的意思是,买彩票,如果中奖了就买小汽车。
if 语句的一般形式如下:
if(表达式) 语句块有以下几点说明:
- if 是 C语言条件判断语句中的关键字之一。
- 表达式是上面介绍过的检测条件,可以是关系表达式和逻辑表达式,也可以是数值。
-
语句块可以是一条语句,也可以是任意合法的复合语句(复合语句要用
{ }
括起来)。
if 语句的执行过程如下:
- 先计算括号中的表达式的值。
- 若表达式的值为真值(条件成立),执行语句块;否则(条件不成立),不执行 if 语句里的语句块,而去执行下一条语句。
if 语句的执行流程图如下图所示:

图 2 if 语句的执行流程图
例如下面的这行代码:
if(iNum) printf("这是真值");上述代码会判断变量 iNum 的值,如果变量 iNum 的值为真值,则执行后面的语句;如果变量的值为假值,则不执行后面的语句。
在 if 语句的括号中,不仅可以判断一个变量的值是否为真值,也可以判断表达式的结果是否为真值,例如:
if(iSignal==1) printf("当前信号灯的状态是:%d:",iSignal);这行代码的含义是:判断
iSignal==1
是否成立,如果条件成立,那么判断的结果是真值,则执行后面的输出语句;如果条件不成立,那么结果为假值,则不执行后面的输出语句。从上面这两行代码可以看到 if 后面的执行部分只是调用了一条语句,如果是两条语句该怎么办呢?这时可以使用花括号标识执行部分使之成为语句块,例如:
if(iSignal==1) { printf("当前信号灯的状态是:%d:\n",iSignal); printf("车需要停止"); }将执行的语句都放在花括号中,这样当 if 语句判断条件为真时,就可以全部执行。使用这种方式的好处是可以更规范、清楚地表达出 if 语句所包含语句的范围,建议大家使用 if 语句时都使用花括号将执行语句标识在内。
C语言if else语句
除了可以指定在条件为真时执行某些语句外,还可以指定在条件为假时执行另外一段代码,这在 C语言中是利用 else 语句来完成的。if else语句的一般形式如下:
if(表达式) 语句块1; else 语句块2;有以下几点说明:
- if 和 else 是 C语言条件判断语句中的关键字。
- 表达式是上面介绍过的检测条件,可以是关系表达式和逻辑表达式,也可以是数值。
-
语句块 1 和语句块 2 可以是一条语句,也可以是任意合法的复合语句(复合语句包含
{}
)。
if else 语句的执行过程如下:
- 先计算括号中的表达式的值。
- 若表达式的值为真值(条件成立),执行 if 语句里的语句块 1;否则(条件不成立),执行 else 语句里的语句块 2。
if else 语句的执行流程图如下图所示:

图 3 if else语句的执行流程图
在 if 后的括号中判断表达式的结果,如果判断的结果为真值,则执行紧跟在 if 后的语句块中的内容;如果判断的结果为假值,则执行 else 语句后的语句块中的内容。例如:
if(value) { printf("这个值为真值"); } else { printf("这个值为假值"); }在上面的代码中,如果 if 判断变量 value 的值为真值,则执行 if 后面的语句块并进行输出。如果 if 判断的结果为假值,则执行 else 下面的语句块并进行输出。
在使用 if 语句比较浮点数是否相等时,不要使用浮点值,否则会导致实际结果存在偏差,因为浮点值属于近似值,例如如下关键代码:注意,一个 else 语句必须跟在一个 if 语句的后面。
double d = 2 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1; //计算的结果是1.5 if (d == 1.5) //比较是否等于1.5 { printf("d的值是1.5"); //输出结果 } else //如果不等于1.5 { printf("d的值不是1.5"); //输出结果 }上述代码的运行结果如下:
d的值不是1.5
从代码运行结果来看,输出的是判断结果值不等于 1.5 对应的语句。因此,两个浮点值的相等测试并不可靠,建议读者朋友不要使用。C语言else if语句
利用 if 和 else 关键字的组合可以实现 else if 语句,该语句可用于对一系列互斥的条件进行检验。else if 语句的一般形式如下:
if(表达式1) 语句块1 else if(表达式2) 语句块2 else if(表达式3) 语句块3 … else if(表达式m) 语句块m else 语句块n例如,某商场举行大转盘抽奖活动,不同的中奖等级会获得不同的奖品,中奖的等级之间是互斥的,每次抽奖的结果都只能出现一个等级。要实现这个抽奖过程,可以使用 else if 语句,对应的流程图如下图所示:

图 4 抽奖流程
使用 else if 语句时,有以下几点说明:
- if 和 else 是 C语言条件判断语句中的关键字;
- 表达式 1、表达式 2 等是上面介绍过的检测条件,可以是关系表达式和逻辑表达式,也可以是数值;
-
语句块 1、语句块 2……语句块 n 可以是一条语句,也可以是任意合法的复合语句(复合语句要用
{}
括起来)。
else if语句的执行过程如下:
- 先计算括号中的表达式 1 的值;
- 若表达式 1 的值为真值(条件成立),则执行 if 后紧跟的语句,忽略后面的 else if 和 else 后紧跟的语句;
- 若表达式 1 的值为假值(条件不成立),则计算表达式 2 的值;若表达式 2 的值为真值(条件成立),则会输出 else if 后紧跟的语句,会忽略 if 后紧跟的语句和 else 后紧跟的语句。如此循环,依次检测每个表达式的值。
else if 语句的执行流程图如下图所示。

图 4 else if语句的执行流程图
首先对 if 语句中的表达式 1 进行判断,如果结果为真值,则执行后面跟着的语句块 1,然后跳过 else if 语句和 else 语句;如果结果为假值,那么判断 else if 语句中的表达式 2。如果表达式 2 的值为真值,则执行语句块 2 而不会执行后面的 else if 或者 else 语句。当所有的判断都不成立,也就是表达式的值都为假值时,执行 else 后的语句块。
例如:
if(iSelection==1) {…} else if(iSelection==2) {…} else if(iSelection==3) {…} else {…}上述代码的含义如下:
- 使用 if 语句判断变量 iSelection 的值是否为 1,如果为 1 则执行后面语句块中的内容,然后跳过之后的 else if 语句和 else 语句的执行;
- 如果 iSelection 的值不为 1,那么通过 else if 语句判断 iSelection 的值是否为 2,如果值为 2,则条件为真,执行后面紧跟着的语句块,执行完后跳过之后的 else if 语句和 else 语句的操作;
- 如果 iSelection 的值也不为 2,那么通过接下来的 else if 语句判断 iSelection 的值是否等于数值 3,如果等于 3,则执行后面语句块中的内容,否则执行 else 语句块中的内容。也就是说,当前面所有的判断条件都不成立(表达式的值为假值)时,执行 else 语句块中的内容;
C语言if语句的嵌套
嵌套可以理解为镶嵌、套用,例如我们熟悉的俄罗斯套娃,一个套着一个,这就可以叫作嵌套。if 嵌套就是在 if 语句中包含一条或多条 if 语句,一般形式如下:if(表达式1) if(表达式2) 语句块1 else 语句块2 else if(表达式3) 语句块3 else 语句块4if 嵌套的功能是对判断的条件进行细化,方便进行相应的操作。例如:
#include<stdio.h> int main() { int iDay; // 定义变量表示输入的内容代表星期几 // 定义变量代表一周中的每一天 int Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, Sunday = 7; printf("请选择星期几:\n"); // 提示信息 scanf("%d", &iDay); // 输入星期信息 if (iDay > Friday) { // 休息日的情况 if (iDay == Saturday) { // 为星期六时 printf("和朋友去逛街\n"); } else { // 为星期日时 printf("在家陪家人\n"); } } else { // 工作日的情况 if (iDay == Monday) { // 为星期一时 printf("开会\n"); } else { // 为其他星期情况时 printf("工作\n"); } } return 0; // 程序结束 }运行程序,结果为:
请选择星期几:
6
和朋友去逛街
- 通过第 14 行 if 语句判断今天是否为休息日。
- 如果,判断出今天是休息日,则继续判断今天是不是星期六。如果第 16 行 if 语句判断为真,那么执行第 18 行语句;如果不为真,那么执行第 22 行语句。也就是如果为星期六就和朋友逛街,如果为星期日就在家陪家人。
- 同理,外层的 else 语句表示工作日时的相应操作。
注意,在使用 if 语句嵌套时,应注意 if 语句与 else 语句的配对情况,else 语句总是会与其上面最近未配对的 if 语句进行配对。