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