a ? b : c是if (a) b else c的缩减版。条件运算符需要3个操作数,是三元运算符。
不同条件表达式的形态
- 大部分基于C的编程语言都支持条件表达式。C/ObjC/C++/Java/C#/PHP 等都支持 a ? b : c的形态。
- Haskell也支持条件表达式,形式有所不同,使用if-then-else语句。
条件表达式返回不同类型
a ? b : c如果b和c的类型不同,将如何返回?默认根据a的类型,返回b和c较大的类型。
- C# 其实也允许b和c的类型不同,只不过它们类型必须能兼容a的类型。
结合性
- 条件表达式是右结合,? 总与右侧最近的 : 匹配。