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;

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

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