Java中的减量

iva*_*elo 5 java

int result = 5;    
result = result--;  
System.out.println(result);  
Run Code Online (Sandbox Code Playgroud)

为什么结果等于5?

Ted*_*opp 15

因为表达式result--的值是递减result 之前的值.然后result递减,最后将表达式的值赋值给result(覆盖递减).


Den*_*ret 13

这没有任何作用:

   result = result--;  
Run Code Online (Sandbox Code Playgroud)

因为result--在递减之前返回结果的值(相反,--result在递减之后返回结果的值).并且由于右边的部分在=之前执行=,你基本上减少结果然后在同一行上将结果设置为它在减量之前的值,从而在实践中取消它.

所以你可以写

   result = --result;  
Run Code Online (Sandbox Code Playgroud)

但是如果你想减少结果,那就干脆做

result--; 
Run Code Online (Sandbox Code Playgroud)

(或者--result;单独使用它是非常不寻常和非典型的,当你不想使用表达式的结果而只是想减少时不要这样做)

  • 几天前我被告知我通过编写`for(var i = a.length; i - > 0;)`来努力阅读代码. (3认同)
  • "这是非常不寻常和非典型的,不要这样做" - 这是纯金:) (2认同)
  • 这确实很难阅读 (2认同)

jsa*_*nen 5

非常有效的问题!

您的代码无效,因为result--仅在替换之后才执行=。如果使用前缀运算符,您的代码将起作用:

result = --result;
Run Code Online (Sandbox Code Playgroud)

但这没有任何意义,因为您可以简单地编写:

--result;
Run Code Online (Sandbox Code Playgroud)

有关更全面的说明,请参见有关前缀/后缀运算符如何在Java上工作的问题/解答