Не понимаю логику вычисления
Я столкнулся с недопониманием логики вычисления в java. Есть такое выражене
int i = 0;
int u = 2;
i += 3 + u--;
Результат = 5. Вопрос: Почему 5, если i = 0 + 3 + (2-1) == 4.
Другой вопрос по вычеслению, есть цикл:
int i = 0;
int u = 2;
for (i = 2; i++ < 12; i += 3 + u--) {
u += i;
}
System.out.println(u);
Результат = 15. Почему 15?
Буду очень благодарен, кто объяснит.
С уважением.
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
var i = 0;
var u = 2;
for (i = 2;
(console.log(`i before loop check = ${i}`) || i++ < 12) && !console.log(`i after loop check = ${i}`);
i += 3 + u--) {
u += i;
console.log(`i = ${i}, u = ${u}`);
}
console.log("Final u =", u);
Автор решения: roddar92
→ Ссылка
Потому что при постфиксном инкременте/дикременте переменной u новое значения присваивается в последнюю очередь, то есть после того, как мы прибавили u к выражению.
Как работает унарный плюс, с унарным минусом логика така же:
int a = i++; <=> int a = i; i = i + 1;
Есть ещё и префиксный инкремент: ++u:
int a = ++i; <=> i = i + 1; int a = i;