若在if語句中,當被判別的表示式的值為「真」或「假」時,都執行乙個賦值語句且給同乙個變數賦值時,可以用簡單的條件運算子來處理。例如,若有以下if語句:
if (a>b) max=a;
else max=b;
可以用條件運算子(? :)來處理:
max=(a>b)?a:b;
其中「(a>b)?a:b」是乙個「條件表示式」。它是這樣執行的:如果(a>b)條件為真,則條件表示式的值就取「?」後面的值,即條件表示式的值為a,否則條件表示式的值為「:」後面的值,即b。
條件運算子要求有3個操作物件,稱三目(元)運算子,它是c++中惟一的乙個三目運算子。條件表示式的一般形式為:
表示式1 ? 表示式2 : 表示式3;
條件運算子的執行順序是:先求解表示式1,若為非0(真)則求解表示式2,此時表示式2的值就作為整個條件表示式的值。若表示式1的值為0(假),則求解表示式3,表示式3的值就是整個條件表示式的值。「max=(a>b)?a:b」 的執行結果是將條件表示式的值賦給max。也就是將a和b二者中的大者賦給max。條件運算子優先於賦值運算子,因此上面賦值表示式的求解過程是先求解條件表示式,再將它的值賦給max。
條件表示式中,表示式1的型別可以與表示式2和表示式3的型別不同。如
x ? 『a': 『b';
如果已定義x為整型變數,若x=0,則條件表示式的值為字元』b』的ascii碼。表示式2和表示式3的型別也可以不同,此時條件表示式的值的型別為二者中較高的型別。如有條件表示式x>y?1:1.5,如果x≤y,則條件表示式的值為1.5,若x>y,值應為1,由於c++把1.5按雙精度數處理,雙精度的型別比整型高,因此,將1轉換成雙精度數,以此作為表示式的值。
【例3.7】輸入乙個字元,判別它是否為大寫字母,如果是,將它轉換成小寫字母;如果不是,不轉換。然後輸出最後得到的字元。
#include using namespace std;int main( )
C 條件運算子
語法 condition first expression r second expression r 說明 當 condition 為 true 時,返回 first expression r,否則返回 second expression r。有些參考書上說 等價於如下語句 if conditio...
C 條件運算子(三目運算子)
在某些情況下,可以用條件運算子 來簡化if語句。是乙個三元運算子,其構成的表示式格式為 表示式1 表示式2 表示式3 條件運算子的執行流程示意圖如上圖所示,描述如下 1 計算表示式1的值 2 若表示式的值為真 或非0 則只計算表示式2,並將其結果作為整個表示式的值 反之,即表示式1的值為假 或為0 ...
C 條件運算子(三目運算子)
在某些情況下,可以用條件運算子 來簡化if語句。基本格式 是乙個三元運算子,其構成的表示式格式為 表示式1 表示式2 表示式3 執行流程 條件運算子的執行流程示意圖如上圖所示,描述如下 1 計算表示式1的值 2 若表示式的值為真 或非0 則只計算表示式2,並將其結果作為整個表示式的值 反之,即表示式...