为了提供更多的灵活性,C语言在基础 if 语句上扩展出了 if-else 结构,用于处理非此即彼的双重选择场景。
1. 生活逻辑与代码映射
以“雨天决策”为例:
- 条件:如果今天的雨比昨天还大
- 真(是):带上雨伞
- 假(否/否则):穿上夹克
- 后续:徒步上班(无论走哪条分支,最后都会执行)
2. 语法结构与执行流程
一般语法:
if(表达式)
语句1;
else
语句2;
其它语句;Code language: JavaScript (javascript)
执行规则:
- 表达式为真(非0):执行
语句1,然后跳过语句2,继续执行“其它语句”。 - 表达式为假(0):跳过
语句1,执行语句2,然后继续执行“其它语句”。
3. 完整代码示例
场景:单价 3.50 元,订购数量 > 10 个打 95 折(优惠5%),否则无折扣。
#include <stdio.h>
int main(void)
{
const double unit_price = 3.50; /* 单价 */
int quantity = 0;
printf("请输入您要购买的数量:");
scanf(" %d", &quantity);
/* 判断数量是否达到折扣门槛 */
if(quantity > 10) /* 超过10个:打95折 */
printf("购买 %d 个的总价格是 %.2f\n", quantity, quantity * unit_price * 0.95);
else /* 否则:无折扣 */
printf("购买 %d 个的总价格是 %.2f\n", quantity, quantity * unit_price);
return 0;
}Code language: PHP (php)
逻辑解析:输入 12 时 12 > 10 为真,走打折分支;输入 8 时为假,走 else 无折扣分支。最终都结束并 return 0。
4. if 与 if-else 核心对比
| 特性 | 基础 if (单分支/多独立) | if-else (双分支) |
|---|---|---|
| 分支数量 | 可多个独立判断(互不影响) | 严格二选一(互斥) |
| 执行效率 | 每个 if 都会判断(可能全判) | 判断一次,选其一执行 |
| 适用场景 | 多种可能同时发生的情况 | 非此即彼的互斥情况 |
| 代码简洁度 | 冗余度高(重复写 if) | 结构紧凑,逻辑清晰 |
6. 提示
当遇到多个互斥条件(如:数量≤10无折,11~20打95折,21~50打9折,>50打85折)时,基础 if-else 可延伸为 else if 阶梯结构(后续知识点):
if(quantity > 50) { ... }
else if(quantity > 20) { ... }
else if(quantity > 10) { ... }
else { ... }Code language: JavaScript (javascript)
Previous: 练习:判断输入数字的大小
Next: 在 if 语句中使用代码块