核心一句话:条件运算符是 if-else 的极简写法,一行搞定「二选一」赋值 / 运算。
一、基础认知(秒懂)
✅ 1. 条件运算符
C 语言唯一的三元运算符(需要 3 个操作数),格式固定:?:
读作:问号冒号,是一个整体,不能拆开用。
✅ 2. 条件表达式
用 ?: 拼接成的完整式子,是 if-else 的「精简替代版」,格式:
c
运行
条件 ? 表达式1 : 表达式2;
二、执行规则(人话翻译,一看就会)
✅ 计算逻辑(3 步走,超简单):
- 先判断「条件」是否成立(和关系表达式一样,成立 = 真 = 1,不成立 = 假 = 0);
- ✔️ 条件成立 → 执行「表达式 1」,整个式子最终结果 = 表达式 1 的值;
- ❌ 条件不成立 → 执行「表达式 2」,整个式子最终结果 = 表达式 2 的值。
💡 大白话:满足条件选前者,不满足选后者,二选一!
三、对比理解(和 if-else 对照,更清晰)
这两种写法功能完全等价,条件表达式更短小,适合简单的二选一场景。
✅ 写法 1:if-else(常规版,代码多)
c
运行
int a, res;
if (a > 60) {
res = 1; // 条件成立,赋值1
} else {
res = 0; // 条件不成立,赋值0
}
✅ 写法 2:条件表达式(极简版,一行搞定)
c
运行
int a, res;
res = (a > 60) ? 1 : 0; // 完全等价上面的if-else
四、实用示例(3 个高频场景,够用)
所有示例直接能跑,看完就会用,覆盖 90% 使用场景:
✅ 示例 1:求两个数的最大值(最常用)
c
运行
int x=5, y=9, max;
max = x > y ? x : y; // x>y?成立选x,不成立选y → max=9
✅ 示例 2:判断成绩是否及格
c
运行
int score=78;
// 及格输出"及格",不及格输出"不及格",一行完成判断+输出
printf("%s\n", score>=60 ? "及格" : "不及格"); // 输出:及格
✅ 示例 3:给变量赋默认值
c
运行
int age=0;
// age为0时赋值18(默认值),不为0则保留原值
age = age == 0 ? 18 : age; // age最终=18
五、核心注意事项(避坑 2 点,必看)
❌ 坑 1
?: 是一个运算符,表达式 1 和表达式 2 的结果类型要一致(比如都是数字、都是字符串),否则会报错。✅ 正确:3>5 ? 10 : 20(都是整数)❌ 错误:3>5 ? 10 : "abc"(数字 + 字符串,类型不一致)
❌ 坑 2
条件表达式适合简单二选一,如果需要在分支里写多行代码(比如多个 printf、多个赋值),千万别用它,老老实实写 if-else 更清晰。
✨ 超精简总结(3 句话记牢)
- 条件运算符:
?:,C 语言唯一三元运算符,专门做二选一; - 条件表达式:
条件?值1:值2,满足选值 1,不满足选值 2; - 核心用法:替代简单 if-else,一行完成「判断 + 赋值 / 运算」,更简洁。