Java post增量和pre增量

B. *_*els 2 java increment

Java中的以下代码:

int a = 0, b = 0, c = 0;
boolean d = (a++ > 0 && b-- < 0) || --c < 0;
Run Code Online (Sandbox Code Playgroud)

结果值:

a = 1, b = 0, c = -1 and d = true
Run Code Online (Sandbox Code Playgroud)

我不明白为什么a= 1,因为它是一个后增量,也应该以与值b相同的方式作出反应.另外,如果我改变b--到--b它仍然有b的值没有影响.

理解这种逻辑的最佳方法是什么?

Era*_*ran 13

a++ > 0返回false,因为a++返回前一个值a(0).

因此,b-- < 0根本不进行评估,因为它&&是一个短路操作器.仅在左操作数为的情况下才评估右操作数true.

--c < 0由于运算||符的第一个操作数是false,因此必须计算第二个操作数.

后d进行评价时,的值a是1,由于a被递增.b遗体0,因为b--没有执行.c是-1因为--c被执行死刑.而且d是true因为--c < 0是true.