java中的后增量和预增量操作的规则

时间:2015-11-08 08:54:03

标签: java post-increment pre-increment

哦,我在这个例子中错过了一些东西......

int a=1;
int b=1;
int c=1;
System.out.println(a+++b---c++);

和下一个不一样吗?

System.out.println( (a++) + (b--) - (c++) ); 

结果似乎是0,但这肯定是错的,那么这里发生了什么?

2 个答案:

答案 0 :(得分:1)

我得到1(这就是我的期望,1 + 1 - 11)。使用eclipse压头(并在操作后添加a bc的输出)

int a = 1;
int b = 1;
int c = 1;
System.out.println(a++ + b-- - c++);
System.out.printf("a=%d b=%d c=%d%n", a, b, c);

我看到了

1
a=2 b=0 c=2

并且原因是后期增量在下一个语句之前不会生效。虽然预增量(例如,++a)立即生效。

答案 1 :(得分:0)

通过使用调试器,我会观察所有变量以跟随表达式

A = B = C = 1

一个。 (a++) + (b--) - (c++) = 1 + 1 = 1 = 0

A =>之后a = 2 b = 0 c = 2

B中。 a++ + b-- - c++ = 2 + 0 - 2

在B =>之后a = 3 b = -1 c = 3

当我们在不同的类中执行这些表达式时,(a++) + (b--) - (c++)html之间没有区别,对于相同的输入存在相同的结果。