Чем отличается i++ от ++i

Часто начинающий программист запутывается в этих i++ и ++i. В этом небольшом посте попробуем разжевать материал так, чтобы не осталось сомнений в том, что Вы, молодой человек, никогда не запутаетесь и однозначно правильно решите какой вариант нужно использовать в конкретном случае.

Пожалуй начать нужно с определения. Оператор ++ — это сокращенное представление инкремента. Другими словами этот оператор применяют для того, чтобы к переменной прибавить 1.

Но почему же, и главное в каких случаях i++ != ++i ?

Дело в том что операция инкремента, как и другие операции, возвращает результат той самой операции. Важно какой результат! Разобравшись в этом больше вопросов не возникнет.

Операция инкремента I++

Данная операция возвращает значение I до того как к I прибавится 1.

Операция инкремента ++I

Данная операция возвращает I после выполнения операции сложения I+1

По сути можно эту функцию разложить на другую: чуть подлиннее:

Надеюсь здесь всё понятно. Теперь, для закрепления материала приведу несколько примеров.

Пример 1: цикл while

Как мы видим в первом случае выводится значение i после выполнения операции сложения, а во втором случае: до.

Пример 2: цикл for

В данном случае, по сути, ничего не меняется. Т.е. не зависимо от того, применяете Вы ++i или i++, в теле цикла мы получаем i = i+1. Поэтому над этим вообще не стоит ломать голову. Всё зависит то предпочтений программиста и никак не влияет на ход выполнения программы.

А вот следующий пример идентичен примеру 1 с циклом while:

Подводим итоги:

Операция инкремента весьма часто используется во всех языках программирования. И то, что я приводил примеры на языке C++, по сути не меняет абсолютно ничего. В течении всей своей карьеры программиста вы ни раз примените эти знания на практике. Поэтому я очень надеюсь, что у меня получилось, всё таки, развернуто объяснить разницу между инкрементными операциями i++ и ++i.

И в итоге я выкладываю простой пример на с++, объединивший в себе все выше приведенные примеры. Код программы доступен для скачивания с моего сайта.

6 thoughts on “Чем отличается i++ от ++i

      1. Пример 2: цикл for
        а что, ошибку не заметили?
        1 и 5 строка аналогичньі
        for (i = 0; i < 10; i++),
        а должно в 5 бьіть
        for (i = 0; i < 10; ++i)

Leave a Comment

Ваш e-mail не будет опубликован.