0

int x = 5;
int answer = x++ * 6 + 4 * 10 / 2;

输出为 50,但为什么 ++ 运算符不将表达式计算为 51?

4

4 回答 4

2

++不是x结果。

为什么 ++ 运算符不将表达式计算为 51?

你能解释一下它是如何或为什么会起作用的吗?如果你想要那样做

 int answer = x * 6 + 4 * 10 / 2 + 1;
于 2013-09-01T20:37:15.887 回答
1

赋值使用在语句执行后递增的后缀运算符。

JLS 提到了这一点:

后缀增量表达式的值是存储新值之前变量的值。

有关更多详细信息,请参阅完整的规范条目

于 2013-09-01T20:37:16.880 回答
0

后缀运算符在执行语句后进行评估。
根据java

递增/递减运算符可以在操作数之前(前缀)或之后(后缀)应用。代码结果++;和++结果;都将导致结果加一。唯一的区别是前缀版本 (++result) 计算为递增值,而后缀版本 (result++) 计算为原始值。

于 2013-09-01T20:39:47.453 回答
0

++ 后缀运算符的定义效果是变量x被递增,就像你写的一样x = x+1,但表达式x++的值是递增之前的值。如果您想在如何x更改方面具有相同的效果,但在周围的表达式中使用after avlue,则需要使用++x. 如果您实际上根本不想增加 的内容x,请使用(x+1).

(但是,我认为,当增量值的分配发生时,它没有定义x——它甚至可能是在anwser获得它的值之后;另一方面,通常x++几乎是原子的。)

于 2013-09-01T20:50:23.037 回答