关于java中条件算子的几个问题
我从Khalid Mugal和其他人那里读到,条件运算符是右联想的 有人能给我解释一下这是什么意思,并给我举个简单的例子吗?条件运算符是因为右侧首先求值 解释 条件运算符的一个简单表达式是关于java中条件算子的几个问题,java,programming-languages,operators,conditional-operator,Java,Programming Languages,Operators,Conditional Operator,我从Khalid Mugal和其他人那里读到,条件运算符是右联想的 有人能给我解释一下这是什么意思,并给我举个简单的例子吗?条件运算符是因为右侧首先求值 解释 条件运算符的一个简单表达式是 condition ? value if true : value if false 一个例子是 boolean ? (10+20):(30+40) 在任何情况下,无论是true还是false,其右侧的求值/计算值都将首先根据条件返回值 : 它在语法上是右联想的(它从右向左分组),因此a?b:c?d:e?
condition ? value if true : value if false
一个例子是
boolean ? (10+20):(30+40)
在任何情况下,无论是true还是false,其右侧的求值/计算值都将首先根据条件返回值
:
它在语法上是右联想的(它从右向左分组),因此a?b:c?d:e?f:g与a?b:(c?d:(e?f:g)的意思相同
也考虑Wiki定义
“一个操作符的结合性(或固定性)是一个属性,它决定了在没有括号的情况下如何对相同优先级的操作符进行分组。”希望对您有所帮助它是正确的关联,因为它在以下文件中被指定为: 条件运算符在语法上是右联想的(它从右向左分组),因此a?b:c?d:e?f:g与a?b:(c?d:(e?f:g)的意思相同
原始规范中的引用提供了一个示例(或者至少是一些可以用来用Java编写基于
main
的快速演示的东西)您的问题针对的是计算机科学的哪个领域?问了7个问题,但没有收到回答!!!!这是没有意义的,因为一般程序员都希望它首先计算布尔表达式,然后决定计算相应的值。它毕竟是if/else结构公共类RightAssociative{public static void main(String args[]){int i=10;int j=true?0:++i;System.out.println(i);}}//i值10,而不是根据u的11,thanks@Gressie@yagnya plz阅读“进一步解释,请参阅链接”@Imran您的进一步解释清楚地表明“未选择的操作数不会针对条件表达式的特定求值进行求值。”这证明了我的观点。(10+20)或(30+40)仅在布尔表达式指示其应该时才计算。不这样做会浪费计算时间,但我说的是评估路径。