3.7.8 三元运算符
三元运算符if-else与众不同,因为它有三个操作数。这的确是一个运算符因为它产生一个值,而不是像一般的if-else语句那样。它由三个表达式组成:如果第一个表达式(后面跟有一个问号?)的计值为true,则对紧跟在问号后面的表达式求值,它的结果就是运算符的结果。如果第一个表达式为false,就执行第三个表达式(在冒号后面),它的结果就是运算符的结果。
可以使用if-else这个条件运算符的副作用或者它产生的值。下面的代码段说明了这两种情况:
这里,条件产生右值。如果b自减运算的结果非零,则把b的值赋给a。如果b变为零,a和b都被赋值为-99。b总是在递减,但是只有在b递减为0时,它才会被赋值为-99。可以使用如下不带“a=”的类似语句来利用它的副作用:
在这里第二个b是多余的,因为运算符产生的值是无用的。但在“?”和“:”之间需要一个表达式。在这种情况下,这个表达式可以是一个常量,它能使代码运行得更快一点。