[英]Java Compound Assignment Operator precedence in expressions
当我尝试执行此操作时,以下代码的输出被声明为“6”。
当我试图通过这个时,表达式“k + = 3 + ++ k;应该被评估为k = k +(3 + ++ k);但在这种情况下输出应该是7.看起来就像它被评估为k = k + 3 + ++ k;这导致6。
有人可以解释一下为什么表达式被评估为“k + 3 + ++ k”而不是“k +(3 + ++ k);?
public class TestClass {
public static int m1(int i){
return ++i;
}
public static void main(String[] args) {
int k = m1(args.length);
k += 3 + ++k;
System.out.println(k);
}
}
除了赋值运算符之外的所有二元运算符都是从左到右计算的; 赋值运算符从右到左进行计算。
所以+
left-to-right
进行评估,其中赋值运算符right to left.
进行计算right to left.
现在你的答案正确吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.