当前位置:嗨网首页>书籍在线阅读

07-else与if配对

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.2.4  elseif 配对

如果程序中有许多 ifelse ,编译器如何知道哪个 if 对应哪个 else ?例如,考虑下面的程序段:

if (number > 6)
     if (number < 12)
          printf("You're close!\n");
else
     printf("Sorry, you lose a turn!\n");

何时打印 Sorry, you lose a turn! ?当 number 小于或等于 6 时,还是 number 大于 12 时?换言之, else 与第1个 if 还是第2个 if 匹配?答案是, else 与第 2if 匹配。也就是说,输入的数字和匹配的响应如下:

数字 响应
5         None
10        You’re close!
15        Sorry, you lose a turn!

规则是,如果没有花括号, else 与离它最近的 if 匹配,除非最近的 if 被花括号括起来(见图7.2)。

47.png

图7.2  `if`   `else` 匹配的规则

注意:要缩进“语句”,“语句”可以是一条简单语句或复合语句。

第1个例子的缩进使得 else 看上去与第1个 if 相匹配,但是记住,编译器是忽略缩进的。如果希望 else 与第1个 if 匹配,应该这样写:

if (number > 6)
{
     if (number < 12)
          printf("You're close!\n");
}
else
     printf("Sorry, you lose a turn!\n");

这样改动后,响应如下:

数字 响应
5         Sorry, you lose a turn!
10        You’re close!
15        None