TransWikia.com

Постфиксный инкремент/декремент. Не понимаю логику вычисления

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?

Буду очень благодарен, кто объяснит.

2 Answers

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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP