三目运算符

三目运算符

基本语法

1
condition ? expression1 : expression2

工作原理

  • 首先计算 condition 的值
  • 如果 condition 为真(非零),则计算并返回 expression1 的值
  • 如果 condition 为假(零),则计算并返回 expression2 的值

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>

int main() {
int a = 10, b = 20;

// 基本用法
int max = (a > b) ? a : b;
printf("较大的数是: %d\n", max); // 输出: 20

// 判断奇偶
int num = 15;
printf("%d 是%s\n", num, (num % 2 == 0) ? "偶数" : "奇数");
// 输出: 15 是奇数

// 赋值给不同变量类型
double result = (a > b) ? 3.14 : 2.71;
printf("结果: %.2f\n", result); // 输出: 2.71

return 0;
}

注意事项

  1. 优先级:三目运算符的优先级较低,建议使用括号明确运算顺序
  2. 类型兼容expression1expression2 的类型应该兼容
  3. 副作用:避免在表达式中使用有副作用的操作
1
2
3
4
5
6
7
// 不推荐的写法(有副作用)
int x = 5, y = 10;
int z = (x++ > 3) ? x : y; // 难以预测的行为

// 推荐的写法
int z = (x > 3) ? (x + 1) : y;
x++; // 明确的自增操作

适用场景

  • 简单的条件赋值
  • 返回两个值中的一个
  • 简化简单的 if-else 逻辑
  • 在宏定义中使用

三目运算符可以使代码更简洁,但过度使用或嵌套过多会降低代码可读性。


三目运算符
http://example.com/2025/11/01/三目运算符/
作者
王柏森
发布于
2025年11月1日
许可协议