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;
遇到三目運算符謹記:
結合方向自右向左,條件運算符?和:是成對出現的,按照一對一對的劃分
這樣就不會感覺很亂,非常清晰。