使条件运算符的行为类似于C中的if / else语句

问题描述

是否可以使?:运算符像下面的示例那样处理几条语句?

condition ? FirstTrueExpression SecondTrueExpression : FirstFalseExpression SecondFalseExpression

有没有一种方法可以避免指定'else'语句?

condition ? TrueExpression

解决方法

您可以使用逗号运算符,来连接多个表达式。 这些表达式从左到右进行求值,其结果类型和值将是右边的表达式。

condition ? FirstTrueExpression,SecondTrueExpression : (FirstFalseExpression,SecondFalseExpression)

请注意,由于运算符优先级,您需要在()附近使用(FirstFalseExpression,SecondFalseExpression),而在()周围不需要FirstTrueExpression,SecondTrueExpression

您可以使用

condition && TrueExpression

代替

condition ? TrueExpression

这要感谢逻辑和&&运算符的短路评估
condition为假时,condition && TrueExpression将为假(0),而与TrueExpression的值无关,因此不会评估TrueExpression
condition为true时,将评估TrueExpression,因为需要它来确定condition && TrueExpression的值。