增量运算符++

arj*_*soh 2 java increment assignment-operator

可能重复:
post increment operator java
"x = x ++"后的x是什么?

有人能解释一下以下每个小程序的结果吗?:

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

结果是:10

为什么不是11因为a应该在任务后增加?这是因为它涉及到opeartor左右不同的变量=?

下一个:

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

结果是:11

可理解,但编译器提出警告:"对变量a的赋值没有效果".结果不同意见.

更新:

我不修改我原来的问题,但我添加这个评论以澄清现在我抓住了警告的含义.也就是说,即使没有赋值(通过简单的语句++ a),结果也是相同的(11).

use*_*421 11

价值a++a.++优先级高于=.所以:

  1. 取值a.
  2. a 增加.
  3. 将(1)处的值存储到a.

所以价值a不会改变.

你可以弄清楚第二种情况会发生什么.