int result = 5;
result = result--;
System.out.println(result);
为什么结果等于5?
答案 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