如何在java 8中评估第2行?

Jil*_*son 1 assignment-operator post-increment java-8

int f = 1;
f = f++;
System.out.println(f);
Run Code Online (Sandbox Code Playgroud)

post increment operator的优先级高于赋值运算符,所以我想f的值(即1)用于赋值,f增加,然后输出为2(因为f的值现在为2),但输出为1 ,但是怎么样?我哪里错了?

我的解释在下面的代码中得到了正确的答案

int f = 1;
int g = f++;
System.out.println(f);
Run Code Online (Sandbox Code Playgroud)

在这种情况下输出为2.

Era*_*ran 7

在评估值之前,无法为变量赋值.因此,您必须先评估f++.并且因为f++返回1,这是分配给的值f,它会覆盖递增的值f.

您的第二个片段是一个完全不同的场景,因为您将值分配给f++另一个变量,因此f不会覆盖递增的值.

  • @SudhirOjha可以工作,因为`++ f`将返回2.当然,没有理由将`++ f`或`f ++'的值赋给`f`. (2认同)