首页 > 编程笔记 > C语言笔记 阅读:120

C语言中的if语句(非常详细)

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

C语言if语句

if 语句会对表达式进行判断,根据判断的结果决定是否进行相应的操作。

图 1 买彩票

例如上图表达的意思是,买彩票,如果中奖了就买小汽车。

if 语句的一般形式如下:
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 语句的执行过程如下:
if else 语句的执行流程图如下图所示:


图 3 if else语句的执行流程图

在 if 后的括号中判断表达式的结果,如果判断的结果为真值,则执行紧跟在 if 后的语句块中的内容;如果判断的结果为假值,则执行 else 语句后的语句块中的内容。例如:
if(value)
{
    printf("这个值为真值");
}
else
{
    printf("这个值为假值");
}
在上面的代码中,如果 if 判断变量 value 的值为真值,则执行 if 后面的语句块并进行输出。如果 if 判断的结果为假值,则执行 else 下面的语句块并进行输出。

注意,一个 else 语句必须跟在一个 if 语句的后面。

在使用 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 语句时,有以下几点说明:
else if语句的执行过程如下:
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
{…}
上述代码的含义如下:

C语言if语句的嵌套

嵌套可以理解为镶嵌、套用,例如我们熟悉的俄罗斯套娃,一个套着一个,这就可以叫作嵌套。if 嵌套就是在 if 语句中包含一条或多条 if 语句,一般形式如下:
if(表达式1)
    if(表达式2) 语句块1
    else    语句块2
else
    if(表达式3) 语句块3
    else    语句块4
if 嵌套的功能是对判断的条件进行细化,方便进行相应的操作。例如:
#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
和朋友去逛街

上面的代码表示整个 if 语句嵌套的操作过程,首先判断为休息日的情况,然后根据判断的结果选择相应的具体判断或者操作,过程如下:

注意,在使用 if 语句嵌套时,应注意 if 语句与 else 语句的配对情况,else 语句总是会与其上面最近未配对的 if 语句进行配对。

相关文章