Рейтинг:   / 2
ПлохоОтлично 

Операции инкремента и декремента в С++

Инкремент ++ – это  увеличение на единицу. Декремент -- – это уменьшение на единицу. Операции декремента и инкремента с лёгкостью заменяются арифметическими операциями или операциями присваивания. Но использовать операции инкремента и декремента намного удобнее.

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;

Но зачем всё усложнять, если можно использовать операции инкремента и декремента, вместо операций присваивания. С точки зрения оформления программного кода, так даже будет правильнее.

   
   
   
   
© программирование с нуля самоучитель | самоучитель по программированию | самоучитель по программированию с нуля | курсы программирования | курсы программирования с нуля