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

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

//синтаксис операций инкремента и декремента
++/*имя переменной*/;  // префиксный инкремент (преинкремент)
/*имя переменной*/++; // постфиксный инкремент (постинкремент)
--/*имя переменной*/;  // префиксный декремент (предекремент)
/*имя переменной*/--; // постфиксный декремент (постдекремент)

Синтаксис использования операций инкремента и декремента таков, что перед или после имени переменной ставится операция инкремента или декремента. Когда операция инкремента или декремента ставится перед именем переменной, то такая операция называется префиксным инкрементом (сокращённо — преинкрементом) или префиксным декрементом  (сокращённо — предекрементом). А если операция инкремента или декремента ставится после имени переменной, то такая операция называется операцией постфиксного инкремента (сокращённо — постинкремент) или постфиксного декремента (сокращённо — постдекремент). При использовании операции преинкремента значение переменной, сначала, увеличивается на 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 можно использовать любой другой, в зависимости от того,  какую необходимо выполнить задачу. Разработаем программу на основе выражений из таблицы, которая наглядно покажет, как себя будут вести операции инкремента и декремента.

// 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).

CppStudio.com
value   = 2011
++value = 2012
value++ = 2012
value   = 2013
--value = 2012
value-- = 2012
value   = 2011
Для продолжения нажмите любую клавишу . . .

Рисунок 1 — Операции инкремента и декремента

Из рисунка 1 видно, что первым делом печатается значение переменной value и оно равно 2011 . Далее выполняется операции преинкремента, которая, в свою очередь, увеличивает на 1 значение переменной value, теперь в value содержится значение 2012.  В строке 12    выполняется операция постинкремента, таким образом, сначала печатается старое значение переменной value – 2012, а потом значение в value увеличивается на 1. Оператор cout в строке 13, как раз, подтверждает изменение значения в переменной valueоно равно 2013. В строке 14 выполняется операции предекремента, а значит, значение в переменной value уменьшается на 1, и оператор cout печатает это значение, теперь value = 2012. В строке 15 выполняется операция постдекремента, но сначала оператор cout печатает значение value, затем операция постдекремента уменьшает значение в переменной value. Теперь value = 2011, это подтверждает оператор cout в строке 16.

Как было выше сказано, операции инкремента и декремента можно заменить эквивалентными операциями, например:

/*операция*/ ++value; /*эквивалентна операции*/  value += 1; 
/*операция*/ --value; /*эквивалентна операции*/  value -= 1; 
/*операция*/ ++value; /*эквивалентна операции*/  value = value +1;
/*операция*/ --value; /*эквивалентна операции*/  value = value - 1;

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

Практика

К сожалению, для данной темы пока нет подходящих задач. Если у вас есть таковые на примете, отправте их по адресу: admin@cppstudio.com. Мы их опубликуем!

Автор: admin
Дата: 25.08.2012
Поделиться:

Комментарии

  1. Андрій Кучменда

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int a=1;
        cout<<"Value   = "<<a<<endl;
        cout<<"++Value = "<<++a<<endl;
        cout<<"Value   = "<<a<<"\n\n";
    
        int b=1;
        cout<<"Value   = "<<b<<endl;
        cout<<"Value++ = "<<b++<<endl;
        cout<<"Value   = "<<b<<"\n\n";
    
        int c=1;
        cout<<"Value   = "<<c<<endl;
        cout<<"--Value = "<<--c<<endl;
        cout<<"Value   = "<<c<<"\n\n";
    
        int d=1;
        cout<<"Value   = "<<d<<endl;
        cout<<"Value-- = "<<d--<<endl;
        cout<<"Value   = "<<d<<"\n\n";
        cin.get();
    }
    Наглядно о том как работают операции.
  2. blablabla

    Здравствуйте.

    Объясните разницу между преинкрементом  и постинкрементом, а то не понятно чем они отличаются, и как машина их различает.

    • Damnt

      Написано же, при использовании преинкремента ( в cout, например) сначала производится прибавление единицы, а потом вывод, при постинкременте сначала производится вывод, а потом значение переменной увеличивается на единицу. Или я не понял вопроса?

  3. admin

    admin

    i += 3
    • PayL

      Это тоже самое что в конце статьи написано, с заменой прединкремента. А я спросил во втором вопросе как без замены на другую операцию это сделать инкрементом, возможно ли это, или инкремент подразумевает только не больше +1?
      И есть ли ответ на первый вопрос? Или нельзя заменить постинкремент эквивалентной операцией, не выполняющейся до завершения команды?

      • admin

        admin

        Инкремент — это только +1, если вы хотите сделать +n, то это уже не инкремент.

    • VornKVold

      VornKVold

      Dear user, our online cinema cares about its customers, thereby providing quality and convenient viewing of video content on the Internet site.
      Can be sure to watch/f Beauty and the Beast you will be completely free of charge and without registration, we have no restrictions on online.
      If you view in 720p hd as everything is fine — looking x/f and enjoy.
      To turn on the player on the phone, tablets, wearable devices that support the Android operating system (Android) without registration, multiple players, easy to play HTML5 and FLASH.

      ##########################################################
      #############################################################
      ### >> [url=https://vk.com/away.php?to=http%3A%2F%2Fbitly.com%2F2ilc5wY]WATCH Beauty and the Beast (2017) [/url]
      ###
      ### >> [url=https://vk.com/away.php?to=http%3A%2F%2Fbitly.com%2F2ilc5wY]DOWNLOAD Beauty and the Beast (2017) [/url]
      #############################################################
      ##########################################################

      .

      .

      .

      Beauty… and… the… Beast… No… Buffering
      Beauty… and… the… Beast… Watch… Season… on
      Watch…Beauty…and…the…Beast…Online…Download
      Beauty. and. the. Beast. Online. Dailymotion
      Die magische Welt von Belle und dem Biest. Hier findest Du KostГјmkleider, Figuren, Puppen, Spielzeug, Becher und Teller mit tollen Motiven und vieles mehr. Die SchГ¶ne und das Biest: Die Disney-Realverfilmung — Jolie Beauty… and… the… Beast… Full… Movie,… 2016… live… steam:… Watch… online
      Full,Movie,Beauty,and,the,Beast,-,Putlocker,Streaming
      Watch… Beauty… and… the… Beast… Online… Megashare
      Watch… Beauty… and… the… Beast… Online… Full… Movie
      Beauty.and.the.Beast.Full.Movie.2016.live.steam:.Watch.online
      Download…Beauty…and…the…Beast…Putlocker
      Die SchГ¶ne und das Biest — Berlin Remake des bereits mehrfach verfilmten MГ¤rchenklassikers mit Vincent Cassel als Biest und LГ©a Seydoux als die SchГ¶ne an seiner Seite. Note Beauty.and.the.Beast.Watch.Online.Full.Free
      DIE SCHГ–NE UND DAS BIEST — Die Webseite zum Film. loading Impressum | Website: broy new media LikeFree!!…Beauty…and…the…Beast…Online…Free
      Musik von Martin Doepke Songtexte von Elke Schlimbach und Grant Stevens Dialoge von Christian Bieniek Idee/Konzept von Andrea Friedrichs, Hans Holzbecher Die SchГ¶ne und das Biest im TV — Sendung — TV SPIELFILM Willkommen auf der Гњbersichtsseite von Disney Die SchГ¶ne und das Biest bei eventim. Falls es keine aktuellen Events geben sollte, kГ¶nnen Sie sich online…Beauty…and…the…Beast…Full…Movie
      Beauty…and…the…Beast…HD…English…Full…Movie…Download
      Die SchГ¶ne und das Biest. Belle, eine wunderschГ¶ne und kluge junge Frau, gelangt auf der Suche nach ihrem vermissten Vater in das Schloss eines Download… Beauty… and… the… Beast… Subtitle… English
      Die SchГ¶ne und das Biest stream online anschauen — 1810: Ein HГ¤ndler (AndrГ© Dussollier) steht nach dem Untergang seiner Schiffe vor dem «Die SchГ¶ne und das Biest» 2017: Erste Bilder von Emma Watch,TV,Series,online,Beauty,and,the,Beast
      Beauty.and.the.Beast.English.Full.Movie.Online
      Die Schöne und das Biest, Ein Film von Christophe Gans mit Vincent Cassel, Léa Seydoux. Übersicht und Filmkritik. 1810: Ein Händler (André Dussollier Beauty… and… the… Beast… Online… Hindi… HBO… 2016… Mojo… Watch… Online
      Die SchГ¶ne und das Biest bei fernsehserien Die SchГ¶ne und das Biest — Musical — Musicals fГјr GroГџ Beauty, and, the, Beast, Watch, Online, Full, Free, 2016
      Beauty, and, the, Beast, Full, Movie, Online, Free
      Die SchГ¶ne und das Biest (1991) Stream online anschauen Die SchГ¶ne und das Biest — Jetzt online Stream anschauen Herzlich Willkommen! SchГ¶n, dass Sie hier sind! Auf dieser Seite stellen wir unser Musicalprojekt «Die SchГ¶ne und das Biest!» vor, das im November 2012 Die SchГ¶ne und das Biest – Wikipedia Beauty.and.the.Beast.virus-free.access
      Die SchГ¶ne und das Biest — ZDFmediathek Kaufen Sie Ihre Tickets fГјr die aktuelle Disney Die SchГ¶ne und das Biest Tour ganz bequem online bei Ticket Online. Bis 30.07.17 tourt Disney Die SchГ¶ne Die SchГ¶ne und das Biest | Mit Geschichten groГџ werden Beauty, and, the, Beast, tv, Hindi, HBO, 2016r
      watch… Beauty… and… the… Beast… Online
      Watch, Beauty, and, the, Beast, Online, HBO, 2016, Online, Streaming, Free
      Beauty… and… the… Beast… tv… Hindi… Film… Free… Watch… Online
      Beauty…and…the…Beast…trailer:…civil
      Disney Die Schöne und das Biest Tickets – Ticket Online Beauty…and…the…Beast…Full…Movie…Watch…Online
      Watch… Beauty… and… the… Beast
      Hugo, der Vater der schönen Elsa, steht kurz vor dem Ruin. Doch das Schicksal scheint sich zu wenden, als Elsa von Ritter Bertolt umworben wird. Auf dem R Beauty. and. the. Beast. Full. Movie. to
      Beauty… and… the… Beast… English… Film… Free… Watch… Online… … …
      Watch. Beauty. and. the. Beast. Online. Torrent
      Beauty.and.the.Beast.live.online:.Will.Meera.save.HDan
      Die Schöne und das Biest (2017): Trailer, Kinostart, Cast Beauty,and,the,Beast,English,Full,Movie
      Die SchГ¶ne und das Biest — Disney Store Beauty,and,the,Beast,Online,Hindi,HBO,2016,Online,Free,Download
      Download.Beauty.and.the.Beast.Subtitle

      die schöne und das biest 2012, die schöne und das biest musical, die schöne und das biest disney, die schöne und das biest der ganze film, die schöne und das biest disney film, die schöne und das biest kinostart, die schöne und das biest das versteckspiel, die schöne und das biest verarchen, die schöne und das biest verarche sychro outtakes 5, die schöne und das biest 2014, die schöne und das biest 2017, die schöne und das biest torrent, die schöne und das biest buch, die schöne und das biest verarche sychro, die schöne und das biest märchen operdonesto
      [URL=http://telegra.ph/Hoe-Sing-2016-Kijken-downloaden-torrent-HD-HD-1080p-01-11]http://telegra.ph/Hoe-Sing-2016-Kijken-downloaden-torrent-HD-HD-1080p-01-11[/URL]
      [URL=http://telegra.ph/Quel-Genre-Hairspray-2007-ac3-yify-torrents-En-hindi-01-11]http://telegra.ph/Quel-Genre-Hairspray-2007-ac3-yify-torrents-En-hindi-01-11[/URL]
      [URL=http://telegra.ph/De-DГіnde-Pet-I-2016-Descargar-Torrent-iphone-br-rip-gratuitas-android-01-11]http://telegra.ph/De-DГіnde-Pet-I-2016-Descargar-Torrent-iphone-br-rip-gratuitas-android-01-11[/URL]

  4. PayL

    Как заменить эквивалентными операциями постинкремент и постдекремент?

    Как без замены эквивалентной операцией задать пред- и пост- инкремент и декремент, но чтобы, к примеру, прибавлялось или отнималось не +1 , а +3 за одну операцию?

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.