我已经按照教程提供了 here并排队:
boolean t1 = false?false:true?false:true?false:true;
t1 的最终值为 false。但我评价它是真的。 第一个 false 给出 true,那个 true 给出 false,最后给出 true 我对吗?不,我错了。 请告诉我如何在 Java 中评估三元表达式?
最佳答案
当编译器找到 ?
字符时,它会查找相应的 :
。 ?
前的表达式是三元条件运算符的第一个操作数,表示条件。
?
和:
之间的表达式是运算符的第二个操作数,如果条件为真则返回其值。
:
后面的表达式是运算符的第三个操作数,如果条件为假则返回其值。
boolean t1 = false ? false : true?false:true?false:true;
first second third
operand operand operand
由于第一个操作数为 false,结果是第三个操作数 true?false:true?false:true
的值,所以让我们评估一下:
true ? false : true?false:true;
first second third
operand operand operand
由于第一个操作数为真,结果为第二个操作数的值 - false
。
顺便说一句,第三个操作数 true?false:true
的值也是 false
,所以 x?false:true?false:true
无论 x
的值如何,都返回 false。
关于java - Java 中的三元表达式是如何求值的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44614401/