Если пост-декремент имеет более высокий приоритет, чем пре-инкремент в JAVA, то почему следующий код выводит как 22.0, а не как 20.0? - PullRequest
0 голосов
/ 12 июля 2020

Согласно правилу приоритета сначала должен быть оценен quantity--, который должен оцениваться как 10, затем должен быть оценен ++quantity, который должен оцениваться как 10, затем выполнено сложение, и результат должен быть 20.0.

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

1 Ответ

2 голосов
/ 12 июля 2020

Правила приоритета сообщают вам, как анализируются выражения. Пост-декремент, имеющий более высокий приоритет, означает, что ++quantity + quantity-- необходимо анализировать как

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

, а не, например, как следующее, что даже не имеет смысла

((++quantity) + quantity)--

порядок оценки не изменяется. Выражение по-прежнему оценивается слева направо. То есть левая ветвь + перед правой веткой. Это означает, что ++quantity нужно оценивать до quantity--.

...