问题描述
是否可以使?:
运算符像下面的示例那样处理几条语句?
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
的值。