1 基础语法
条件运算符的语法格式:
表达式1 ?表达式 2:表达式 3
其中,
-
表达式 1 一定起 判别 作用。表达式 2 和 表达式 3 只能有一个执行。
-
三目运算的结果,必须被使用。
运算规则:
-
判断 表达式 1 的结果:
-
为真,整个三目运算的结果为 表达式 2
-
为假,整个三目运算的结果为 表达式 3
-
能解决什么问题呢?比如,查询成绩系统中,根据成绩判定是否及格?可以用 三目运算来进行判断。
-
综合案例 1:接收学生成绩,判断是否 及格,给出 Y/N 结果。
// 目标: 掌握 三目运算语法特性
int main(void)
{
double score;
printf("请输入成绩:");
scanf("%lf", &score);
char res = score >= 60 ? 'Y' : 'N'; // 三目运算结果 赋值给 res 变量
printf("是否及格? %c\n", res);
return 0;
}
-
案例 2:找出两个数中的较小值
// 目标: 掌握 三目运算语法特性
int main(void)
{
int a = 10;
int b = 20;
printf("较小值为:%d\n", a < b ? a : b); // 三目运算结果在 printf 中使用
return 0;
}
2 特性和嵌套应用
嵌套条件运算符的写法,在实际编程中较少见,因为代码可读性低。 但是,计算机考试中,经常出做考点。辨别技巧是,当 表达式中 有 2 个以上问号、冒号,一定是发生了 三目运算嵌套。处理方法是,先将位于右边的 “?” 与它后面最近一个 “:” 配对。因为条件运算符的结合性,自右向左。优先级高于赋值运算符,低于算数、逻辑、比较运算符。
-
案例 1:
int res = w < x ? x + w : x < y ? x : y // w < x ? x + w :(x < y ? x : y)
将右侧的与后面的 :配对,x < y ? x : y 看做一组 三目运算表达式,作为另外一组 三目运算的 表达式 3。
-
案例 2:
int res = a > b ? c > d ? e : f : g // a > b ? (c > d ? e : f ): g
将右侧的与后面的 :配对,c > d ? e : f 看做一组 三目运算表达式,作为另外一组三目运算的 表达式 2。这种嵌套写法,看其他人写的程序时,能看懂即可。我们不要这样写。
3 总结
-
语法规则:
-
表达式1 ?表达式 2:表达式 3
-
表达式 1 为真,整个取表达式 2; 为假,整个取表达式 3
-
结果必须被使用
-
-
嵌套三目运算:
-
出现 两个以上 ?: ,说明有嵌套。
-
自右向左,找 “?” 与它后面最近一个 “:” 配对
-
-
优先级:
-
高于 赋值运算符,低于 算数、逻辑、比较运算符。
-