Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

delyan86 avatar delyan86 0 Точки

Въпрос по задача за while цъкъл

Здравейте, имам въпрос за една задача - задачата е "Преместване" (7-та от лекцията за while цикъл). Ето го и кода, който съм написал

https://pastebin.com/mwApuFr9

та въпроса ми е следния - в края на цикъл, за да взема следващата стойност от масива използвам:

        index++;
        command = input[index];

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

        command = input[index++];

но ако ползвам този код и във Visual Studio Code като го изпълня получавам друг отговор, защо се получава това, къде бъркам?

Тагове:
0
Programming Basics 18/07/2020 15:36:56
MariqnK1 avatar MariqnK1 52 Точки
Best Answer

command = input[++index]

 

Ако се използва постфикс, с оператор след операнд (например, x ++), прирастът на оператора се увеличава и връща стойността преди увеличаване.

Ако се използва префикс, с оператор преди операнд (например ++ x), операторът на инкремент увеличава и връща стойността след увеличаване.

 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Increment

0
delyan86 avatar delyan86 0 Точки

Да, след като гледах и се чудих се усетих, че трябва да използвам префикс, за да увелича. Благодаря и на двамата Ви за отговорите!

0
krasizorbov avatar krasizorbov 548 Точки

Това се получава защото първо се изпълнява командата и чак след това се увеличава индекса

Но ако първо увеличиш индекса както си го направил ще работи коректно

Другия начин да увеличиш индекса е този => command = input[++index];

Плюсчетата ги поставяш пред индекса! Така първо увеличаваш и после се изпълнява командата!

 

0
18/07/2020 16:25:41
delyan86 avatar delyan86 0 Точки

Да, след като гледах и се чудих се усетих, че трябва да използвам префикс, за да увелича. Благодаря и на двамата Ви за отговорите!

0
krum_43 avatar krum_43 750 Точки

A защо не използваш директно записа command=input[index+1];  ?  Явно тези префикси и постфикси те объркват.

0
MariqnK1 avatar MariqnK1 52 Точки

Аз мисля, че ти се обърка. Не работи с +1 защото на всяка итерация ще добавя 1 без да го запазва резултата никъде.

Ако искаш да работи по този начин, ще трябва да е command = input[index += 1];

1
18/07/2020 17:05:22
krum_43 avatar krum_43 750 Точки

Да,така е.Това имах пред вид.

1
takvor avatar takvor 45 Точки

Ако искаш да постигнеш горната логика трябва command = input[++index] - преинкрементиране.

При твоя запис, който постинкрементира, първо взимаш стойността на индекса и след това го увеличаваш.

0
18/07/2020 17:43:30
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.