赋值后增量表达式

Vik*_*shi 1 java variable-assignment

为什么这个程序的输出是10,为什么不是11?

public class Test {
  public static void main(String[] args){
    int p = 10;
    p = p++;
    System.out.println(p);
  }
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 6

尽管在完成赋值之前后缀++更改p,但表达式的值仍然是原始值p,即10.这是分配给的p.

这是正在发生的事情:

  • p 被安排了 10
  • p在增量之前保存了值
  • p递增,新值11存储在p
  • 保存的值10存储回来p.