我在一个Java编程测试问题中发现了这一点。
public class Calculator {
public static void main(String[] args) {
int i = 0;
Calculator c = new Calculator();
System.out.print(i++ + c.opearation(i));
System.out.print(i);
}
public int operation(int i) {
System.out.print(i++);
return i;
}
}
执行上面的代码片段可以得到
121
. 我希望是
111
. 我来解释我是怎么解释的。
+
operator precedence
). 所以,
c.operation(0)
首先调用并打印值
1
相反,我希望
0
自从
System.out.print
打印的值
i
首先,然后递增i值,因为它是后递增运算符。
其次
值1返回到main和语句
System.out.print(i++ + 1)
立即执行。从那以后
有post increment运算符,它应该像
0 + 1
并产生了结果
把结果打印出来
2
.
我
1个
按预期打印出来。
简言之,我希望将值打印为
011
但我得到的结果是
. 我不知道我的解释哪里出错了。