0

Объясните почему 0

Проходил задание там вот такой код: var a=2; var b=3; alert(++a%b--) Ответ будет 0, почему не 1. Каким образом Алерт выводит 0? Если он доходит до b то дальше он не считает?

9th Nov 2019, 8:22 AM
Denis Kovalev
Denis Kovalev - avatar
3 ответов
+ 3
alert(++2%3--) - это 4 действия. Вот их порядок с учётом приоритета операций: 1) ++2 = 3; 2) ++2%3 = 3%3 = 0; 3) alert(++2%3) = alert(3%3) = 0; 4) 3-- = 2. Префиксные инкремент и декремент (++a и --a) имеют максимальный приоритет, а постфиксные инкремент и декремент (a++ и a--) — минимальный. А вот если бы выражение выглядело так: alert(++2%--3), то оно бы решалось так: alert(++2%--3) = alert(3%2) = 1. Ещё возможно такое: alert(2++%3--) = alert(2%3) = 2. И такое: alert(2++%--3) = alert(2%2) = 0.
15th Nov 2019, 9:14 PM
Pavel
0
Потому что в первом операнде preincrement, то есть сразу возвращает значение. А во втором операнде postincrement, который возвращает значение и после прибавляет.
9th Nov 2019, 8:33 AM
Timur Myngbay
Timur Myngbay - avatar
- 1
Сколько тебе лет? Не пора ли учить английский?
9th Nov 2019, 8:35 AM
Timur Myngbay
Timur Myngbay - avatar