【发布时间】:2016-02-27 08:09:59
【问题描述】:
这样做在逻辑上是否相同:
if ( a || b || c || d)
对
if ((a || b) || (c || d))
也就是说&&和||的顺序如何操作员工作是从左到右还是从右到左?
怎么样:
if ( a && b && c && d)
对
if ((a && b) && (c && d))
【问题讨论】:
-
运算符的所有参数总是从左到右计算。优先级是另一回事(即选择从哪个运算符开始)。
-
@bizclop 所有操作数都是从左到右计算的。运算符根据它们的关联性和优先级进行评估。
-
@EJP 是的,我澄清了那个声明。右关联性意味着从右到左进行评估,这只是一种普遍存在的误解。
-
@bizclop 这根本不是一个“普遍存在的误解”。这是真的。请参阅JLS:“有 12 个赋值运算符;所有在语法上都是右关联的(它们从右到左分组)。因此,a=b=c 表示 a=(b=c),它分配的值c 给 b,然后将 b 的值赋给 a。"
标签: java