Java中的减量

时间:2012-06-18 16:09:12

标签: java

int result = 5;    
result = result--;  
System.out.println(result);  

为什么结果等于5?

8 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:12)

这没有任何作用:

   result = result--;  

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

所以你可以写

   result = --result;  

但是如果你想减少结果,只需做

result--; 

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

答案 2 :(得分:4)

非常有效的问题!

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

result = --result;

然而,这没有任何意义,因为你可以简单地写:

--result;

有关更详尽的说明,请参阅this question/answers on how prefix/postfix operators work on Java

答案 3 :(得分:3)

这是令人困惑的构造。与

相同
int tmp = result;
result--;  
result = tmp;

答案 4 :(得分:2)

您正在使用后减量运算符。这是因为您正在撰写result--而不是--result。表达式result--的值是result的副本,在递减之前定义。这就是为什么它被称为 post -decrement。

在定义表达式result--的值之后,result递减。 但是:在此之后,result的值会被result--表达式(result = 5)的值覆盖,该值为5。

答案 5 :(得分:1)

result--是post decrement ..这意味着该值首先分配给result然后递减。

您可能会发现此answer有用。

我相信你想要做的是:

int result = 5;     
result--; 
System.out.println(result);  

答案 6 :(得分:0)

更改为前缀增量以获得所需结果,或删除赋值语句:

int result = 5;
result = --result;
System.out.println(result);

答案 7 :(得分:0)

结果= - 结果; 它将打印4,你将了解它们之间的差异 c--和--c