一、语法?
表达式 ? 结果1 : 结果2;
翻译成人话:
如果 表达式 成立 → 返回 结果 1 否则 → 返回 结果 2
二、代码里的这句:
return x > y ? x : y;
等价于:
if (x > y) {
return x;
} else {
return y;
}
意思就是:x 比 y 大就返回 x,否则返回 y → 就是取最大值。
三、例子
int a = 5;
int b = 3;
// 用法1:赋值
int max = a > b ? a : b;
// 因为 5>3 成立 → max = 5
// 用法2:直接输出
printf("%d", a > b ? a : b);
// 输出 5
四、通用规则(必看)
- 问号前面是判断条件
x > y、a == b、score >= 60都可以 - 问号后面是两个选择 条件真 → 选冒号左边 条件假 → 选冒号右边
- 整个式子最终会得到一个值
五、更多例子
// 1. 判断成年人
int age = 20;
char* result = age >= 18 ? "成年" : "未成年";
// 2. 取最小值
int min = x < y ? x : y;
// 3. 分数及格判断
char c = score >= 60 ? 'P' : 'F';
六、什么时候用?
- 简单二选一的时候用
- 代替短短的
if-else - 让代码更简洁、一行写完
总结
x > y ? x : y= 如果 x 大,就给我 x,否则给我 y