post-increment 和 pre-increment 操作在 java 中的规则

Rules for post-increment and pre-increment operations in java

哦,我在这个例子中遗漏了一些东西...

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

是不是和下一个一样?

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

好像结果是0,但肯定是错误的,这是怎么回事?

我得到 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

而且,原因是post增量直到下一条语句才生效。而预增量(例如,++a)立即生效。

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

a=b=c=1

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

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

乙。 (a++) + (b--) - (c++) = 2 + 0 - 2

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

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