三目運算符“?:”省略中間操作的特殊用法及舉例


在使用三目運算符的時候,我們經常見到的是:

x ? x : y

就是if else的簡寫

如果x為真,就返回x,如果x為假,就返回y。這是最簡單最基本的用法。

但是有時候會看到這種用法

x ?: y

?與:之間沒有任何操作數或表達式,這是什么用法呢?

在通過幾個實例的實驗后,猜測?與:之間省略了x

也就是說x ? : y  就是 x ? x : y

這樣就可以講的通了。

 

那么形如 a > b ?: b 中間省略了什么呢,是a嗎

驗證之后發現並不是a

其實省略了 a > b

也就是說 a > b ?: b 等價於 a > b ? a > b : b

那么可以這樣下結論:“?:” 中間省略的東東是與 “?”之前的數或者表達式完全一致。

 

值得注意的是:在某種情況下,還是會有出入的

譬如 y = ++x ? ++x : 3  與 y = ++x ?: 3

輸出的y的結果是不一樣的,這是為什么呢?

當x的初始值為0時,第一種寫法的輸出y的結果為2 ,而第二種寫法的輸出y的結果為1

說明第一種寫法輸出的是執行了兩次++操作的結果,而第二種寫法只執行了一次++操作

所以當有++或--運算的時候,要根據需要判斷要不要省略,不能貿然省去,從而引起不必要的錯誤

 

其實這種省略方式還是挺好的,特別是代碼長度比較長的時候,可以在滿足要求的前提下簡化代碼

 

感謝:http://blog.csdn.net/road_dongliang/article/details/48134993


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM