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.
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |