条件运算符:“?:”,
优先级别为13级,赋值运算符 < 条件运算符 < 逻辑运算符
结合方向:右结合
一般形式:
表达式1?表达式2:表达式3
计算过程:
当表达式1成立时,只计算表达式2的值,该值为整个式子的值。
当表达式1不成立时,只计算表达3的值,该值为整个式子的值。
例
if……else语句:
if(a>b){
max = a;
}else{
max=b;
}
等价于条件表达式:
max = (a>b)?a:b
max = a > b ? a : b;
是一种 三元运算符,用于根据条件选择值并赋值给变量。
示例代码
#include <stdio.h>
int main() {
int a = 10, b = 20;
int max = a > b ? a : b; // 如果 a > b 为真,max = a;否则 max = b
printf("最大值是: %d\n", max); // 输出: 最大值是: 20
return 0;
}
工作原理
该表达式等价于以下 if-else 语句:
if (a > b) {
max = a;
} else {
max = b;
}
解释:
如果 a > b 为真,则将 a 的值赋给 max。
否则,将 b 的值赋给 max。
注意事项
优先级:三元运算符的优先级低于关系运算符,但高于赋值运算符。例如:
max = a > b ? a : b + 10; // 等价于 max = (a > b) ? a : (b + 10);
嵌套使用:可以嵌套多个三元运算符,但需注意括号以避免歧义。例如:
int max = a > b ? (a > c ? a : c) : (b > c ? b : c);
优点:
简洁:相比 if-else,代码更短。
高效:适合简单条件判断。
缺点
可读性:嵌套使用时可能降低代码可读性,需谨慎使用。
评论0
暂时没有评论