條件操作符(三元操作符)

C++中有一個需要注意的操作符,這個操作符石C++中唯一的三元操作符,這個操作符就是條件操作符。


用法:

    cond ? value1 : value2;

    

簡介:

    這個表達式的求解順序是計算cond的值是否等於0,如果等於0(也就是false),那麼返回value2(如果value2是一個表達式,那麼計算表達式的值並返回計算結果),否則返回value1(如果value2是一個表達式,那麼計算表達式的值並返回計算結果)。



使用三元操作符的時候需要注意以下幾點:

    (1)避免三元操作符的深度嵌套。如下,雖然對於程序猿來說比較高大上,但是如果自己疏忽某些地方可能造成意想不到的結果,另外這樣的代碼可讀性下降。

        int value =   i > j ? i > k ? i : k : j > k ? j : k;


    分析上邊的表達式的時候我們需要遵循一個原則:三元操作符需要 ?和:作爲一個整體。根據從左向右看的原則,第一個問號和倒數第二個冒號匹配.



    (2)條件表達式的優先級相對比較低,最好把這個操作符所做的操作用一個括號括起來。這樣一方面避免忽略操作符的優先級造成意想不到的結果,同時使得代碼可讀性提高。下邊列舉幾個primer上的例子:

cout << (i < j ? i : j);// ok: prints larger of i and j
cout << (i < j) ? i : j;// prints 1 or 0!
cout << i < j ? i : j;// error: compares cout to int

    第一個表達式沒有什麼問題。


    第二個表達式就有問題了,他把i和j的比較結果作爲cout的操作數,輸出0或者1,然後把cout的操作結果作爲條件來判斷三元操作符的結果。如果cout的值不等於0,那麼返回三元操作符的結果是i,否則爲j。


    

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