Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему так странно работает постинкремент ? (https://javascript.ru/forum/misc/76127-pochemu-tak-stranno-rabotaet-postinkrement.html)

MallSerg 07.12.2018 15:46

Цитата:

Сообщение от hoz
У "=" приоритет самый почти низкий, кроме "+" и "-". Каким боком сразу присвоится тогда?

Дело не в приоритете операторов а в том что делает этот оператор.
Префиксный увеличивает значение переменной до того как выражение получило фактическое значение переменной.
Постфиксный после того как выражение получило фактическое значение переменой.
Так исторически сложилось еще в древних ассемблерах операция INC или DEC регистра очень часто встречалась либо в начале блока либо в конце после этого проверка и переход в начало кода или выход из него (реализация обычного цикла). т.к. это было практически в любом цикле то для такого поведения в высоко уровненных языках придумали специальный коротки оператор.

Alexandroppolus 07.12.2018 16:43

Цитата:

Сообщение от ksa (Сообщение 500003)
Странная формулировка... Постикремент "запоминает" уже инкрементное значение.

уже инкрементное значение запоминать не надо, оно и так хранится в переменной

а старое значение запоминать надо, чтобы его вернуть.

потому постикремент чуть медленнее (по крайней мере в С) и некоторые в циклах for по привычке пишут ++i

более того, в плюсах можно для своих классов переопределять операторы, в том числе ++/--
https://ru.wikipedia.org/wiki/%D0%9F...80%D0%BE%D0%B2

и можно заметить, что постикремент делается именно как я написал, с копией старого значения


Часовой пояс GMT +3, время: 16:18.