Почему так происходит?

Встретил на learn.javascript.ru интересную задачку по инкременту и декременту:
var a = 2, b = 7, c = 4, d, e;
a = ++a + a++ - b++ - --b + ++c -1 ; //-4
b = --b + b-- + ++c - ++a + a++ +1 ; //19
d = --b + --a * --c + a++ ;
e = ++d + ++d /2 ;
alert(a); alert(b); alert(d);alert(c); alert(e);

Первые два примера я решил,оказалось,что правильно.Но вот с последними двумя беда(
Так я решил 3-ий пример: d = 18 + -2*5;
А так 4-ый: e = 2/2;

Кто-нибудь может указать на ошибки и помочь их исправить?
  • Вопрос задан
  • 2353 просмотра
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
1. В 3-м примере
d = --b + --a * --c + a++;
d = --(19) + --(-2) * --(6) + (-3)++;
d = 18 + -3 * 5 -3; // Итого 0


2. В 4-м примере
e = ++d + ++d /2;
e = ++(0) + ++(1) /2;
e = 1 + 2 /2; // Итого 2
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
var a = 2, b = 7, c = 4, d, e;
a = ++a + a++ - b++ - --b + ++c -1 ; //3+3-7-7+5-1;a=-4;b=7;c=5;
b = --b + b-- + ++c - ++a + a++ +1 ; //6+6+6-(-3)+(-3)+1;a=-2;b=19;c=6;
d = --b + --a * --c + a++ ; //18+(-3)*5+(-3);a=-2;b=18;c=5;d=0;
e = ++d + ++d /2 ; //1+2/2;a=-2;b=18;c=5;d=2;e=2;
alert(a); alert(b); alert(c);alert(d); alert(e);

++a значит вставить сразуже значение a+1 и увеличить значение a=a+1
a++ значит вставить сразуже значение a и увеличить значение a=a+1
Аналогично с --a и a--
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы