Операции инкремента и декремента в С++
Инкремент ++
– это увеличение на единицу. Декремент --
– это уменьшение на единицу. Операции декремента и инкремента с лёгкостью заменяются арифметическими операциями или операциями присваивания. Но использовать операции инкремента и декремента намного удобнее.
1
2
3
4
5
|
//синтаксис операций инкремента и декремента ++ /*имя переменной*/ ; // префиксный инкремент (преинкремент) /*имя переменной*/ ++; // постфиксный инкремент (постинкремент) -- /*имя переменной*/ ; // префиксный декремент (предекремент) /*имя переменной*/ --; // постфиксный декремент (постдекремент) |
Синтаксис использования операций инкремента и декремента таков, что перед или после имени переменной ставится операция инкремента или декремента. Когда операция инкремента или декремента ставится перед именем переменной, то такая операция называется префиксным инкрементом (сокращённо — преинкрементом) или префиксным декрементом (сокращённо — предекрементом). А если операция инкремента или декремента ставится после имени переменной, то такая операция называется операцией постфиксного инкремента (сокращённо — постинкремент) или постфиксного декремента (сокращённо — постдекремент). При использовании операции преинкремента значение переменной, сначала, увеличивается на 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
// increment_decrement.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> using namespace std; int main( int argc, char * argv[]) { int value = 2011; cout << "value = " << value << endl; // начальное значение cout << "++value = " << ++value << endl; // операция преинкремента cout << "value++ = " << value++ << endl; // операция постинкремента cout << "value = " << value << endl; // конечное значение в переменной value после выполнения операции постинкремента cout << "--value = " << --value << endl; // операция предекремента cout << "value-- = " << value-- << endl; // операция постдекремента cout << "value = " << value << endl; // конечное значение в переменной value после выполнения операции постдекремента system ( "pause" ); return 0; } |
Код программы простой, поэтому пояснений к нему не будет, тем более, что в комментариях всё расписано.
Как было выше сказано, операции инкремента и декремента можно заменить эквивалентными операциями, например:
1
2
3
4
|
/*операция*/ ++value; /*эквивалентна операции*/ value += 1; /*операция*/ --value; /*эквивалентна операции*/ value -= 1; /*операция*/ ++value; /*эквивалентна операции*/ value = value +1; /*операция*/ --value; /*эквивалентна операции*/ value = value - 1; |
Но зачем всё усложнять, если можно использовать операции инкремента и декремента, вместо операций присваивания. С точки зрения оформления программного кода, так даже будет правильнее.