【发布时间】:2015-10-07 21:48:28
【问题描述】:
当我运行这个 Java 代码时:
int[] a = new int[10];
int i = 0,j = 0;
while(i < 10){
a[i++] = j+++j++;
}
System.out.println(Arrays.toString(a));
我得到输出:[1, 5, 9, 13, 17, 21, 25, 29, 33, 37]。
有人可以解释一下声明a[i++] = j+++j++是如何解决的。
【问题讨论】:
-
它像
a[i++] = (j++) + (j++);一样绑定。 -
解决方法是用程序员管理工具(又名大棒 :-))敲打程序员的脑袋。说真的,如果你不写那样糟糕的代码,那么你就不需要知道它的含义。如果是其他人编写的……请使用上述项目管理工具。
-
这不是运算符优先级问题。这是何时评估副作用的问题。