从头学C(25)if-else语句

0

来看看最简单的条件判断语句。

第三章 控制流 >> 3.2 if-else语句

它的语法格式是:

if (表达式)
    语句1 或 程序块1
else
    语句2 或 程序块2

其中else是可选部分。

执行过程是:先计算表达式的值,如果为真(非0),则执行语句1或程序块1;如果表达式的值为假(等于0),并且else部分存在,则执行语句2或程序块2。

由于else部分是可选的,因此在嵌套的if语句中,可能会出现混乱。C语言的规则是,每个else会与最近的前一个没有else配对的if进行匹配。

例如在如下代码中:

if (n > 0)
    if (a > b)
        z = a;
    else
        z = b;

else部分与上一个if(a>b)进行匹配,而且我们特意通过程序的缩进结构来明确这一点。但是要注意,缩进仅仅是使代码看起来结构更清晰一点,而并不能影响语句的执行次序(因为编译器不能根据缩进来判断编程者的设计意图)。因此,如果我们希望else部分与if(n>0)进行匹配,像如下代码肯定是错误的:

if (n > 0)
    if (a > b)
        z = a;
else
    z = b;

我们必须用花括号来明确我们的意图,如下代码才是正确的:

if (n > 0) {
    if (a > b)
        z = a;
}
else
    z = b;

这种歧义在有if语句嵌套的情况下,可能导致意想不到的结果。因此,我们强烈建议在有if嵌套的程序中使用花括号。

Leave A Reply