如何评估Java中的三元表达式?

Bib*_*ire 4 java conditional ternary-operator

我也跟着教程提供了这里,并在线路:

boolean t1 = false?false:true?false:true?false:true;
Run Code Online (Sandbox Code Playgroud)

t1的最终值为false.但我认为它是真的.first false给出了true,而true给出了false,这最终真的给了我是对的吗?不,我错了.请告诉我如何在java中评估三元表达式?

Era*_*ran 5

当编译器找到一个?字符时,它会查找相应的字符:.前面的表达式?是三元条件运算符的第一个操作数,表示条件.

?和之间的表达式:是运算符的第二个操作数,如果条件为真,则返回其值.

后面的表达式:是运算符的第三个操作数,如果条件为false,则返回其值.

boolean t1 = false   ? false    :    true?false:true?false:true;

             first     second        third
             operand   operand       operand
Run Code Online (Sandbox Code Playgroud)

由于第一个操作数为false,结果是第三个操作数的值true?false:true?false:true,所以让我们评估它:

true    ?   false    : true?false:true;

first       second     third
operand     operand    operand
Run Code Online (Sandbox Code Playgroud)

由于第一个操作数为true,因此结果是第二个操作数的值 - false.

顺便说一句,第三个操作数的true?false:true值也是false,所以x?false:true?false:true无论值是多少都返回false x.