++a + (a-- * a++); почему 16?
// 4 + (4 *(3+1)) должно быть 20, поему 16?
Какой порядок действий? С начала считаем все инкременты-декременты слева-направо, потом выполняем математические операции. Что у меня не так.
package com.javarush.task.pro.task08.task0817;
public class Solution {
public static void main(String[] args) {
int a = 3;
int b = ++a + (a-- * a++);
System.out.println(b);
}
}
Чтобы первое слагаемое было равно 4, как до его вычисления, нужно использовать постинкремент а++. После но вычисления а станет равно 5. Чтобы второе число было равно 4, надо сначала уменьшить а с 5 до 4, значит надо использовать предекремент --а. В этом случае сначала а уменьшится на 1, а результат уже будет участвовать в вычислении. Ну и третий член выражения должен использовать постинкремент, чтобы при вычислении было взято текущее значение а, а уже после вычисления оно изменилось.