java - 为什么在此代码中后递增运算符无法递增 'a'?

标签 java addition post-increment

package com;

public class Test {

    public static void main(String[] args)
    {
        int a= 11, b = 10;
        a = a++ + ++b;  //why? output is "22 11" and not "23 11"
        System.out.println(a+" "+b);

    }

}

最佳答案

以下是表达式的求值方式(粗略地说,我没有检查 JLS 的求值顺序,但我认为是从左到右):

a = a++ + ++b;  // a is 11, b is 10
a = 11 + ++b;  // a is 12 but its previous value 11 was returned by a++, b is 10
a = 11 + 11;  // a is 12, b is 11 and its updated value was returned by ++b
a = 22;  // a is 12, b is 11 and its updated value was returned by ++b

因此,这是预期的结果,您只需应用这些运算符的定义即可。

关于java - 为什么在此代码中后递增运算符无法递增 'a'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57936422/

相关文章:

arrays - bash:意外的数组成员句柄

java - 如何在android中处理队列? java

java - 如何对文本进行断字?

android - 以编程方式将选项卡添加到选项卡主机

jquery - 多个文本字段的加法和减法

c++ - C++ 中奇怪的后增量行为

performance - 为什么 i=i+1 比 i++ 快?

java - 无法执行jar文件:mainclass属性丢失Intellij Gradle

java - 为什么我收到 java.sql 可能无法访问客户端由于缺少 'requires transitive'

Java:使用代码从文件夹添加外部库