語法:
condition ? first_expression_r : second_expression_r;
說明:當 condition 為 true 時,返回 first_expression_r,否則返回 second_expression_r。
有些參考書上說 ?: 等價於如下語句:
if (condition)
else
實際不是的,因為上述 if 語句中兩個表示式都沒有返回值。
int n = (1>3) ? 1 : 3;
雖然上述示例有點無聊,因為 1 肯定不會大於 3,但它是乙個完整正確的 ?: 示例。
另外,上述括號可以不要,只是為了更便於閱讀,以及為了減少更改條件時造成的錯誤,這裡加了括號。
int m = 3;
int n = (m*2 > 5) ? m : 5;
n 是多少呢?3 還是 6,應該是 3,可以看出雖然 m 在條件中被乘以 2,但並沒有賦值給 m,也就是說 m 的值並未得到改變。int n = ((m=m*2) > 5) ? m : 5; 這樣就是 6 了。
條件運算子為右聯運算子
a ? b : c ? d : e
等價於
a ? b : (c ? d : e)
而不是
(a ? b : c) ? d : e
而其運算順序是從左到右,所以下述示例的結果是 2,而不是 3。
int m = 3;
int n = (m=m*2)>7 ? 1 : m>5 ? 2 : 3;
C 條件運算子
若在if語句中,當被判別的表示式的值為 真 或 假 時,都執行乙個賦值語句且給同乙個變數賦值時,可以用簡單的條件運算子來處理。例如,若有以下if語句 if a b max a else max b 可以用條件運算子 來處理 max a b a b 其中 a b a b 是乙個 條件表示式 它是這樣執...
C 條件運算子(三目運算子)
在某些情況下,可以用條件運算子 來簡化if語句。是乙個三元運算子,其構成的表示式格式為 表示式1 表示式2 表示式3 條件運算子的執行流程示意圖如上圖所示,描述如下 1 計算表示式1的值 2 若表示式的值為真 或非0 則只計算表示式2,並將其結果作為整個表示式的值 反之,即表示式1的值為假 或為0 ...
C 條件運算子(三目運算子)
在某些情況下,可以用條件運算子 來簡化if語句。基本格式 是乙個三元運算子,其構成的表示式格式為 表示式1 表示式2 表示式3 執行流程 條件運算子的執行流程示意圖如上圖所示,描述如下 1 計算表示式1的值 2 若表示式的值為真 或非0 則只計算表示式2,並將其結果作為整個表示式的值 反之,即表示式...