C 條件運算子

2021-06-08 22:10:27 字數 772 閱讀 7614

語法:

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,並將其結果作為整個表示式的值 反之,即表示式...