Stack Overflow на русском Asked by user3241026 on December 16, 2020
Я столкнулся с недопониманием логики вычисления в 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?
Буду очень благодарен, кто объяснит.
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);
Correct answer by Igor on December 16, 2020
Потому что при постфиксном инкременте/дикременте переменной u
новое значения присваивается в последнюю очередь, то есть после того, как мы прибавили u
к выражению.
Как работает унарный плюс, с унарным минусом логика така же:
int a = i++; <=> int a = i; i = i + 1;
Есть ещё и префиксный инкремент: ++u
:
int a = ++i; <=> i = i + 1; int a = i;
Answered by roddar92 on December 16, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP