條件運算子

文章推薦指數: 80 %
投票人數:10人

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 usingnamespacestd; intmain(){ inti=1,j=2; cout<j?i:j)<



請為這篇文章評分?