1. else-if 多路选择结构
else-if 结构用于处理多个互斥的条件分支,从上到下依次判断,执行第一个为真的分支后跳出整个结构。
通用语法骨架:
if(条件1)
// 条件1为true时执行
else if(条件2)
// 条件1为false,条件2为true时执行
else if(条件3)
// 前两个为false,条件3为true时执行
/* ... 可继续扩展 ... */
else
// 以上所有条件均为false时执行(可选)Code language: JavaScript (javascript)
核心执行规则:
- 一真即停:从上往下遇到第一个
true的表达式,执行对应语句块后直接结束整个if-else if链。 - 全假走else:若所有
if条件均为false,执行else分支;若省略else且全假,则什么都不执行。 - 条件顺序敏感:判断区间时必须按从小到大(或大到小)严格排序,避免大区间拦截小区间的数据。
2. 薪资区间判断示例解析
if(salary < 5000)
printf("Your pay is very poor."); // pay < 5000
else if(salary < 15000)
printf("Your pay is not good."); // 5000 <= pay < 15000
else if(salary < 50000)
printf("Your pay is not bad."); // 15000 <= pay < 50000
else if(salary < 100000)
printf("Your pay is very good."); // 50000 <= pay < 100000
else
printf("Your pay is exceptional."); // pay >= 100000Code language: JavaScript (javascript)
逻辑要点:利用“一真即停”特性,省略了下界判断(如 salary >= 5000 && salary < 15000),代码更简洁。若把 salary < 100000 写在最前面,所有小于10万的数都会提前被拦截,导致后续分支失效。
3. 练习:根据时间输出问候语
需求:早晨(<12)输出“早上好”,中午(<14)输出“中午好”,否则输出“下午好”。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int hour = 5;
if(hour < 12)
printf("早上好");
else if (hour < 14)
printf("中午好");
else
printf("下午好");
return 0;
}Code language: PHP (php)
执行逻辑:hour=5 满足 hour < 12 直接输出“早上好”并结束判断;若为13,首个条件假,满足第二个输出“中午好”;若为15,前两个均假,走 else 输出“下午好”。