Кто-нибудь может мне объяснить, нахуя в JS нужна постфиксная форма i++ / i--, которая меняет значение переменной, но оставляет предыдущее?
>>217783335 (OP)Студент программист си++ в тренде, поясни как понять оставляет преведущие ? Я не шарю за этот говноязык
>>217783666Так я его приравниваю к другой переменной, и она берёт предыдущее значение первой переменной. Я не могу понять, нахуя это надо
>>217783697http://lurkmore.to/%D0%98%D0%BD%D0%B4%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BE%D0%B4
МНе тоже ответьте, пидарасы. Можно ли проще написать вот этот вот функционал? https://drive.google.com/file/d/10B-MpVsjA9ebXUU1wUqWujgAYfDDap1X/view?usp=sharing
>>217783697Не так. Ты присваиваешь значение одной переменной другой и ПОСЛЕ этого происходит икремент первой.let a = 1;let b = a++;// a = 2, b = 1
>>217783748Можешь человеческим языком объяснить, в каких случаях может использоваться только i++, а не ++i?
>>217783335 (OP)Такие конструкции помогают с производительностью, постинкремент с записью выполняктся за один такт.
>>217783849Зависит от реализации, конкретных задач, мы то откуда ебем зачем Напиши сетевой чат на сокетах и поймёшь зачем
>>217783849Иногда это полезно для оптимизации. Например, ты пишешь что-нибудь типаc = a++ b;в этом случае операции a++ и ab могут быть выполнены параллельно, а если ты пишешь.c = ++a * 2;то сначала нужно будет посчитать результат ++a, а потом уже умножить на 2.
>>217783955>>217783974Всё равно не понял, лол.В первом случае c выдаст не то значение, по сути результат a * b
>>217783812Тебе надо сначала произвести действие, а потом инкремент, или после? И в любом си-подобном языке инкремент и декремент одинаково работают, не?Нужно дохуя где, это шортхенд синтаксис. Разница в том, что:let a = 0;console.log(++a);//1console.log(a++);//1console.log(a);//2Понял?
>>217784127>Тебе надо сначала произвести действие, а потом инкрементЭто. В каком случае мне это может быть надо?>И в любом си-подобном языке инкремент и декремент одинаково работают, не?В душе не ебу.>let a = 0;>console.log(++a);>//1>console.log(a++);>//1>console.log(a);>//2Здесь же нет разницы между префиксной и постфиксной формой, правильно? В обоих случаях к a прибавляется 1
>>217784280Это одна программа. Подумай, почему второй косоль лог вернет 1?>где использовать?++i можно использовать например для вывода чисел от 1 до 100.Еще можешь попробовать вывести элемент массива с его нормером в массиве: «элемент массива номер 1: вася». Это то что сразу на ум пришло. Это нужная хуйня, ты просто не сталкивался с неоьходимостью.
>>217784638>++i можно использовать например для вывода чисел от 1 до 100.>Еще можешь попробовать вывести элемент массива с его нормером в массиве: «элемент массива номер 1: вася».Так я про i++ спрашивал, ++i я понимаю.>Подумай, почему второй косоль лог вернет 1?Потому что он плюсует 1 к a, но возвращает её старое значение, правильно?
постфикс сначала вернет значение, затем инкрементирует переменную, а префикс сначала инкрементирует, а потом вернет.let v = 0;console.log(v++); // 0let v = 0;console.log(++v) // 1Это просто возможность языка. Она, в целом, нахуй не нужна сейчас. Остается в стандарте для совместимости. Вообще переменные зачастую хуйня полная - лучше использовать константы.const v = 0;console.log(v); // 0console.log(v + 1); // 1Сразу понятно где у тебя что и в каком состоянии.
>>217785186В языке есть еще другие, менее известные фичи, которые просто не используются, но тянутся уже давно.Например, comma operator:let x = 1;x = (x++, x);console.log(x); // 2
А тебя это вообще ебет? Людям нужно, на тебя все хуй клали. С такими доебами нахуй нужен тогда перфиксная форма? Нахуй нужен for, когда можно заменить вайлом и наоборот? Ссу тебе в ротеш крч.
>>217783430> c++> не знает перфиксной и постфиксной формы инкремента/декрементаМожешь ливать со своей шараги, тебя там не учат.
>>217783697Ну предыдущее значение то увеличолсь на единицу. И инкременты в основном используются в циклах.
>>217785186>Вообще переменные зачастую хуйня полная - лучше использовать константыДвачую. Состояния программы в константах храни.
>>217785319Анон, помоги улучшить скрипт оператором с запятой!for(let x=0;х>1;x++?x++:x-1) {console.log(x--?x+1:x-1);}
>>217783335 (OP)Z=I++ + 1сначала выполняется z=i+1, затем i=i+1Z=++i + 1 сначала выполняется i=i+1, затем z=i+1
>>217783832Чел, это жаба, блядь, скрипт, какие нахуй такты и производительность? Только на разбор этой хуйни интерпретатор потратит овердохуя тактов. Ты ещё байтоёбить на жабаскрипте начни, ну, там, битовые сдвиги делать... пиздец.
>>217783335 (OP)Не жабаскрипт, но в любом языке с C-подобным синтаксисом например что-то такое:size_t i = 0;while (!something.isReady()) {int value = arr1[i++];value += arr1[i++];value /= arr1[i++];value *= arr1[i++];something.check(value);}
>>217783549мне так похуй, что я не могу об этом молчать, сука как же я ненавижу таких ебаных мудаков, которые зайдут в тред и отпишутся только чтобы высрать "ыыы ну ета просто подумай сам)) лол))"
>>217783335 (OP)Ты еблан сукапри z = x++, сначала х присвоено зет, затем х увеличено а при z = ++x сначала х увеличится, а затем будет присовено зет
>>217797765>меняет значение переменной, но оставляет предыдущееТы его одногруппник с таким же однозначным iq?