如果 post 递减的优先级高于 JAVA 中的预递增那么为什么以下代码输出为 22.0 而不是 20.0 。?

If post decrement have higher precedence than pre increment in JAVA then why does the following code output as 22.0 and not as 20.0 .?

根据优先规则,首先应计算 quantity-- 应计算为 10 然后应计算 ++quantity 应计算为 10 然后执行加法和结果应该是 20.0.

    int quantity = 10;
    double total = ++quantity + quantity--;
    System.out.println("total is: - " + total);

优先规则告诉您如何解析表达式。 Post 具有更高优先级的减量意味着 ++quantity + quantity-- 必须被解析为

((++quantity) + (quantity--))

而不是像下面这样甚至没有意义的例子

((++quantity) + quantity)--

评估顺序不受影响。表达式仍然从左到右求值。也就是说,+ 的左分支在右分支之前。这意味着必须在 quantity--.

之前评估 ++quantity