C

C 知识量:16 - 74 - 317

7.1 分支语句><

if语句- 7.1.1 -

if语句被称为分支语句或选择语句,因为它相当于一个交叉点,程序要在两条分支中选择一条执行。if语句的通用形式如下:

if (expression)
    statement

如果对expression求值为真(非0),则执行statement,否则跳过statement。statement可以是一条简单语句或复合语句。

if语句的结构和while语句很相似,它们的主要区别是:如果满足条件可执行的话,if语句只能测试和执行一次,而while语句可以测试和执行多次。

示例:

#include <stdio.h>

int main(void) {
    int x = 1;
    if (x > 0) {
        printf("x is bigger than 0.");
    }
    system("pause");
    return 0;
}

注意:即使if语句由复合语句构成,整个if语句仍被视为一条语句。

if else语句- 7.1.2 -

if else语句可以在两条语句之间作选择,通常用于不是这样就是那样的情况。其通用形式为:

if (expression)
    statement1
else
    statement2

如果expression为真(非0),则执行statement1;如果expression为假或0,则执行else后面的statement2。其中,statement1和statement2可以是简单语句或复合语句。

示例:

#include <stdio.h>

int main(void) {
    int x = -1;
    if (x > 0) {
        printf("x is bigger than 0.");
    } else {
        printf("x is smaller than 0.");
    }
    system("pause");
    return 0;
}

运行结果为:

x is smaller than 0.

多重选择else if- 7.1.3 -

对于多种选择可能的情况可以使用多个else if语句,例如:

#include <stdio.h>

int main(void) {
    int x = 9;
    if (x < 0) {
        printf("x<0");
    } else if (x > 10) {
        printf("x>10");
    } else {
        printf("x is between 0 and 10.");
    }
    system("pause");
    return 0;
}

运行结果为:

x is between 0 and 10.

以上代码中,使用了if、else if和else语句,增加了可选择的路径。

else与if配对- 7.1.4 -

当程序中存在许多if和else时,else与if的配对是非常关键的,决定了程序选择执行哪个分支。具体配对规则是:如果没有花括号,else总是与离它最近的if匹配,除非最近的if被花括号括起来。例如:

#include <stdio.h>

int main(void) {
    int x = 11;
    if (x > 0) {
        printf("x>0");
        if (x < 10) {
            printf("x is between 0 and 10");
        }
    } else {
        printf("x<=0");
    }
    system("pause");
    return 0;
}

以上代码运行后,只会显示x>0。最后1个else与第1个if匹配,中间的if被花括号括起来了,成为了第1个if语句的一部分。

多层嵌套的if语句- 7.1.5 -

上一个示例就是一个嵌套if语句的例子。有时,选择一个特定选项后又引出其他选择,这种情况就可以使用多层嵌套的if语句。示例:

#include <stdio.h>

int main(void) {
    int x = 0;
    if (x >= 0) {
        if (x > 0) {
            printf("x>0");
        } else {
            printf("x=0");
        }
    } else {
        printf("x<0");
    }
    system("pause");
    return 0;
}

运行结果为:

x=0

可以向if语句中嵌套无数个if语句,但是这会显著增加程序的复杂性,因此不推荐嵌套太多。