来看看最简单的条件判断语句。
第三章 控制流 >> 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嵌套的程序中使用花括号。