三元运算符

条件运算符(三元运算符)

条件运算符是 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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注