條件運算子
文章推薦指數: 80 %
expression ? expression : expression. 備註. 條件運算子(? :) 是三元運算子, (它需要三個運算元) 。
條件運算子運作方式如下:. 第一個運算元會 ...
跳到主要內容
已不再支援此瀏覽器。
請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。
下載MicrosoftEdge
其他資訊
目錄
結束焦點模式
語言
閱讀英文
儲存
目錄
閱讀英文
儲存
Twitter
LinkedIn
Facebook
電子郵件
目錄
條件運算子:?:
發行項
05/02/2022
8位參與者
本文內容
語法
expression?expression:expression
備註
條件運算子(?:)是三元運算子,(它需要三個運算元)。
條件運算子運作方式如下:
第一個運算元會隱含轉換成bool。
接著會對它進行評估,並且完成所有副作用,再繼續執行。
如果第一個運算元評估為true(1),則會評估第二個運算元。
如果第一個運算元評估為false(0),則會評估第三個運算元。
條件運算子的結果會是所評估運算元(也就是第二個或第三個運算元)的結果。
在條件運算式中,只會評估後兩個運算元的其中一個。
條件運算式具有由右至左順序關聯性。
第一個運算元必須為整數類資料類型或指標類型。
下列規則適用於第二個和第三個運算元:
如果這兩個運算元屬於相同類型,則結果為該類型。
如果兩個運算元都是算術或列舉類型,則會執行標準轉換)涵蓋的一般算術轉換(,以將它們轉換成一般類型。
如果這兩個運算元都是指標類型,或者其中一個是指標類型,另一個是判斷值為0的常數運算式,則會進行指標轉換,將它們轉換成一般類型。
如果這兩個運算元屬於參考類型,則會進行參考轉換,將它們轉換成一般類型。
如果這兩個運算元屬於void類型,則一般類型會是void類型。
如果這兩個運算元屬於相同的使用者定義類型,則一般類型會是該類型。
如果運算元的類型不同,且至少其中一個運算元具有使用者定義類型,則會使用語言規則來判斷一般類型。
(請參閱下列警告)。
未包含在上述清單中的任何第二個和第三個運算元組合都不合法。
結果的類型是一般類型,而如果第二個和第三個運算元屬於相同類型且都是左值,則結果也會是左值。
警告
如果第二個運算元的類型與第三個運算元的類型不同,則會叫用依照C++標準指定的複雜類型轉換規則。
這些轉換可能會導致非預期的行為,包括建構和解構暫存物件。
因此,強烈建議您(1)避免使用使用者定義類型做為搭配條件運算子的運算元,或者(2)如果您使用使用者定義類型,則明確地將每個運算元轉換成一般類型。
範例
//expre_Expressions_with_the_Conditional_Operator.cpp
//compilewith:/EHsc
//Demonstrateconditionaloperator
#include
延伸文章資訊
- 1三元運算子英文的評價費用和推薦,EDU.TW和網紅們這樣回答
Ternary Operator (三元運算子),也可以叫做Conditional Expression (條件表達式)用這種表示法對於初學者可能會感到非常困惑。即使他們已經...,三元運算符英...
- 2三元運算子- 維基百科,自由的百科全書
即為三元運算子表達式。 Python語言中三元條件運算子表達式 x if C else y 。Python還支援列表的切片操作也是三元運算子,如 a[b:c] 。 OCaml的三元運算子表達式 a.
- 3三元運算子(Ternary Operator)和布林值混用的簡化方法
- 4條件運算子
expression ? expression : expression. 備註. 條件運算子(? :) 是三元運算子, (它需要三個運算元) 。 條件運算子運作方式如下:. 第一個運算元會 ...
- 5條件運算子- JavaScript
條件(三元) 運算子是JavaScript 唯一用到三個運算元的運算子:在一個條件後面會跟著一個問號(?),如果條件是truthy,在冒號(:)前的表達式會被執行, ...