三目运算符
基本语法
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); int num = 15; printf("%d 是%s\n", num, (num % 2 == 0) ? "偶数" : "奇数"); double result = (a > b) ? 3.14 : 2.71; printf("结果: %.2f\n", result); return 0; }
|
注意事项
- 优先级 :三目运算符的优先级较低,建议使用括号明确运算顺序
- 类型兼容 :
expression1 和 expression2 的类型应该兼容
- 副作用 :避免在表达式中使用有副作用的操作
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 逻辑
- 在宏定义中使用
三目运算符可以使代码更简洁,但过度使用或嵌套过多会降低代码可读性。