Инкремент ++ – это увеличение на единицу.
Декремент -- – это уменьшение на единицу.
Операции декремента и инкремента с лёгкостью заменяются арифметическими операциями или операциями присваивания. Но использовать операции инкремента и декремента намного удобнее.
//синтаксис операций инкремента и декремента ++/*имя переменной*/; // префиксный инкремент (преинкремент) /*имя переменной*/++; // постфиксный инкремент (постинкремент) --/*имя переменной*/; // префиксный декремент (предекремент) /*имя переменной*/--; // постфиксный декремент (постдекремент) |
Синтаксис использования операций инкремента и декремента таков, что перед или после имени переменной ставится операция инкремента или декремента. Когда операция инкремента или декремента ставится перед именем переменной, то такая операция называется префиксным инкрементом (сокращённо — преинкрементом) или префиксным декрементом (сокращённо — предекрементом). А если операция инкремента или декремента ставится после имени переменной, то такая операция называется операцией постфиксного инкремента (сокращённо — постинкремент) или постфиксного декремента (сокращённо — постдекремент). При использовании операции преинкремента значение переменной, сначала, увеличивается на 1, а затем используется в выражении. При использовании операции постинкремента значение переменной сначала используется в выражении, а потом увеличивается на 1. При использовании операции предекремента, значение переменной, сначала, уменьшается на 1, а затем используется в выражении. При использовании операции постдекремента, значение переменной, сначала, используется в выражении, а потом уменьшается на 1. В таблице 1 показаны примеры выражений с использованием операций инкремента и декремента, а также приведена их краткая характеристика.
Операции инкремента и декремента в С++ | |||
Операция | Обозна-чение | Пример | Краткое пояснение |
преинкремент | ++ | cout<< ++ value | Значение в переменной value увеличивается, после чего, оператор cout печатает это значение |
предекремент | – – | cout << ––value | Значение в переменной value уменьшается, после чего, оператор cout печатает это значение |
постинкремент | ++ | cout << value++ | Оператор cout печатает значение переменной value, затем увеличивает это значение на 1 |
постдекремент | – – | cout << value–– | Оператор cout печатает значение переменной value, затем уменьшает это значение на 1 |
В примерах используется оператор cout, чтобы показать, например, в чём различие постфиксных и префиксных операций. Вместо оператора cout можно использовать любой другой, в зависимости от того, какую необходимо выполнить задачу. Разработаем программу на основе выражений из таблицы, которая наглядно покажет, как себя будут вести операции инкремента и декремента.
![]() |
Код программы простой, поэтому пояснений к нему не будет, тем более, что в комментариях всё расписано. Результат работы программы (см. Рисунок 1).
value = 2011
++value = 2012
value++ = 2012
value = 2013
--value = 2012
value-- = 2012
value = 2011
Для продолжения нажмите любую клавишу...
Рисунок 1 — Операции инкремента и декремента
Из рисунка 1 видно, что первым делом печатается значение переменной value и оно равно 2011. Далее выполняется операции преинкремента, которая, в свою очередь, увеличивает на 1 значение переменной value, теперь в value содержится значение 2012. В строке 11 выполняется операция постинкремента, таким образом, сначала печатается старое значение переменной value – 2012, а потом значение в value увеличивается на 1. Оператор cout в строке 12 как раз подтверждает изменение значения в переменной value, оно равно 2013. В строке 13 выполняется операции предекремента, а значит, значение в переменной value уменьшается на 1, и оператор cout печатает это значение, теперь value = 2012. В строке 14 выполняется операция постдекремента, но сначала оператор cout печатает значение value, затем операция постдекремента уменьшает значение в переменной value. Теперьvalue = 2011, это подтверждает оператор cout в строке 15.
Как было выше сказано, операции инкремента и декремента можно заменить эквивалентными операциями, например:
/*операция*/ ++value; /*эквивалентна операции*/ value += 1; /*операция*/ --value; /*эквивалентна операции*/ value -= 1; /*операция*/ ++value; /*эквивалентна операции*/ value = value +1; /*операция*/ --value; /*эквивалентна операции*/ value = value - 1; |
Но зачем всё усложнять, если можно использовать операции инкремента и декремента, вместо операций присваивания. С точки зрения оформления программного кода, так даже будет правильнее.