溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

iOS中奇妙的三目運算符示例詳解

發(fā)布時間:2020-10-22 19:53:37 來源:腳本之家 閱讀:329 作者:木暮風(fēng) 欄目:移動開發(fā)

前言

三目運算符:也叫三元運算符。這個運算符的符號是: ? :,下面這篇文章主要給大家介紹了關(guān)于iOS三目運算符的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧

基礎(chǔ)

一般情況下,我們使用三目運算符(?:)的語法格式是:

(expression)?if-true-statement :if-false-statement;

如果表達(dá)式expression結(jié)果為真,則執(zhí)行if-true-statement,否則執(zhí)行if-false-statement。

我們經(jīng)常會使用三目運算符進(jìn)行簡單的判斷賦值,例如:

y = x ? x : z;

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

高級

但是偶爾我們也會看到這種用法:

y = x ? : z;

? 與 :之間沒有任何操作數(shù),這是什么用法呢?

通過幾次實驗發(fā)現(xiàn),當(dāng)x為真時,y的值與x值一致。那我猜測? 與 : 之間省略了x。

也就是說,y = x ? : z; 與y = x ? x : z;等價,這樣就和事實相一致了。

復(fù)雜

但是,這這只是最簡單的情況,那么稍微復(fù)雜一點的情況呢?

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

經(jīng)過驗證后發(fā)現(xiàn),并不是a。

其實它是省略了a > b 。

也就是說a > b ? : b 等價于 a > b ? a > b : b;

那么這樣似乎可以得出結(jié)論,? 與 : 中間省略的東西,是與? 之前的表達(dá)式一致的。

那么確實是這樣的嗎?

特例

我們知道,在OC中,有一類很奇怪的運算符,自增(++)/自減(--)運算符。那么它在三目運算符中的表現(xiàn)如何呢?
如:

int x = 0; 
int y = ++x ? ++x : 3;

則最終,y的值為2。

然而,

int x = 0; 
int y = ++x ? : 3;

最終,y的值居然是1。

怎么兩次的結(jié)果不一致呢?按照上面的結(jié)論,y的值應(yīng)該都是2才對啊。

那為什么第一種結(jié)果y的值為2,而第二種結(jié)果y的值為1呢?

結(jié)論

據(jù)我猜想,? 與: 之間省略的應(yīng)該是?之前表達(dá)式的值,而不是省略的表達(dá)式。

這樣就可以解釋上面所有的情況了。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI