哦,我在这个例子中错过了一些东西......
int a=1;
int b=1;
int c=1;
System.out.println(a+++b---c++);
和下一个不一样吗?
System.out.println( (a++) + (b--) - (c++) );
结果似乎是0,但这肯定是错的,那么这里发生了什么?
答案 0 :(得分:1)
我得到1
(这就是我的期望,1 + 1 - 1
是1
)。使用eclipse压头(并在操作后添加a
b
和c
的输出)
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
之间没有区别,对于相同的输入存在相同的结果。