e=a>= b?a>=c?a:c:b>=c?b:c;你想象不到的三目运算符的应用

a?b:c这个表达式的意思就是:如果条件a为真,则结果为表达式b;如果a为假,则结果为表达式c
例如 条件语句:
if(a>b) max=a;
else max=b;
可用条件表达式写为
max=(a>b)?a:b;

执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max.
使用条件表达式时,以下需要注意:

1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符. 因此

max=(a>b)?a:b 

可以去掉括号而写为

max=a>b?a:b

2)条件运算符的结合方向是自右至左.
例如
求三个数中的最大值可以写成

e = a >= b ? a >= c ? a : c : b >= c ? b : c;

(写者的话:这段代码一看很迷,第一反应是:
在这里插入图片描述
excuse me?后来中规中矩分析一下)
就可以理解为:

e = (a >= b) ? (a >= c ? a : c) : (b >= c ? b : c);
//也就是如下拆分
h = (a >= c) ? a : c;
d = (b >= c) ? b : c;
e = (a >= b) ? h : d;

遇到三目运算符谨记:
结合方向自右向左,条件运算符?和:是成对出现的,按照一对一对的划分
这样就不会感觉很乱,非常清晰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章