【发布时间】:2011-11-16 13:21:21
【问题描述】:
我在理解 java 中的复合赋值运算符和赋值运算符时遇到了一些问题。有人可以向我解释这两个运算符真正是如何工作的吗? (在某处我找到了一个非常好的示例代码,它使用临时变量来解释工作,但遗憾的是我失去了它。)非常感谢你。这是我的小示例代码(我已经知道前缀和后缀运算符之间的区别):
int k = 12;
k += k++;
System.out.println(k); // 24 -- why not (12+12)++ == 25?
k = 12;
k += ++k;
System.out.println(k); // 25 -- why not (1+12)+(1+12) == 26?
k = 12;
k = k + k++;
System.out.println(k); // 24 -- why not 25? (12+12)++?
k = 12;
k = k++ + k;
System.out.println(k); // 25 -- why not 24 like the previous one?
k = 12;
k = k + ++k;
System.out.println(k); // 25 -- OK 12+(1+12)
k = 12;
k = ++k + k;
System.out.println(k); // 26 -- why?
【问题讨论】:
-
逻辑基础是++k加在主操作之前,k++中主操作先执行。
标签: java variable-assignment operator-keyword