2009 年 9 月 23 日(上次更新:2013 年 4 月 16 日)
條件(或三元)運算子(?:)
評分:3.9/5 (1003 票)
簡介
條件運算子是在 C 和 C++(以及其他語言,如 C#)中使用的一種運算子。?: 運算子根據表示式的結果返回兩個值之一。
語法
(表示式 1) ? 表示式 2 : 表示式 3
如果表示式 1 的計算結果為 true,則計算表示式 2。
如果表示式 1 的計算結果為 false,則改為計算表示式 3。
例子
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
在此示例中,計算表示式 a > b
。如果它的計算結果為 true,則返回 a。如果它的計算結果為 false,則返回 b。因此,行 MAX(4, 12);
的計算結果為 12。
您可以使用它來選擇要分配給變數的值
int foo = (bar > bash) ? bar : bash;
在此示例中,將 'bar' 或 'bash' 分配給 'foo',具體取決於哪個更大。
甚至要將值分配給哪個變數
((bar > bash) ? bar : bash) = foo;
在這裡,將 'foo' 分配給 'bar' 或 'bash',同樣取決於哪個更大。
注意事項
使用條件運算子時,您可能犯的最常見的錯誤是忘記運算子優先順序。?: 運算子的優先順序相當低,因此很容易犯各種錯誤。
請訪問 http://www.difranco.net/cop2220/op-prec.htm 檢視 C++ 運算子及其優先順序的表(按降序排列)。