条件运算符(三元运算符)
条件运算符是 C 语言中唯一一个需要三个操作数的运算符,因此也称为三元运算符。它根据一个逻辑条件的真假,从两个表达式中选择一个进行求值并返回结果。
1. 语法格式
条件表达式 ? 表达式1 : 表达式2
执行规则:
- 先求值
条件表达式 - 若为 true(非0) → 计算
表达式1,整个表达式的结果就是表达式1的值;表达式2不会被计算 - 若为 false(0) → 计算
表达式2,整个表达式的结果就是表达式2的值;表达式1不会被计算
2. 基础示例
#include <stdio.h>
int main(void)
{
int y = 5;
int x = y > 7 ? 25 : 50;
printf("%d", x); // 输出 50(因为 5 > 7 为假)
return 0;
}Code language: PHP (php)
等价的 if-else 写法:
#include <stdio.h>
int main(void)
{
int y = 5;
int x = 0;
if (y > 7)
x = 25;
else
x = 50;
printf("%d", x); // 输出 50
return 0;
}Code language: PHP (php)
3. 典型应用场景
场景一:取两者中的较大值
int max_salary = your_salary > my_salary ? your_salary : my_salary;
场景二:嵌入复杂表达式中(折扣计算)
total_price = unit_price * quantity * (quantity > 10 ? 0.95 : 1.0);
含义:如果 quantity > 10,折扣系数为 0.95(95折),否则为 1.0(无折扣)。整个表达式一行完成,无需额外的 if-else 块。
场景三:嵌套条件运算符(谨慎使用)
// 根据分数评级:>=90 为 A,>=60 为 B,否则为 C
char grade = score >= 90 ? 'A' : (score >= 60 ? 'B' : 'C');Code language: PHP (php)
Previous: 逻辑非运算符 !
Next: 练习:使用条件运算符实现多级别折扣计算