Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: Piotr Szawdyński
Kurs C++

Czym się różni preinkrementacja od postinkrementacji

[pytanie/odpowiedź] Dokument opisuje jaka jest różnica pomiędzy preinkrementacją, a postinkrementacją.

Wprowadzenie

Podczas nauki programowania w C++ na pewno spotkałeś się z pojęciem inkrementacji wartości. Inkrementacja jest to zwiększenie wartości o jeden. Wartość zmiennej liczbowej można zwiększyć o jeden za pomocą zapisów:
C/C++
++zmienna;
zmienna++;
zmienna += 1;
zmienna = zmienna + 1;
Wszystkie powyższe zapisy dadzą taki sam wynik, jeżeli zostaną one użyte w osobnej linijce kodu. W przedstawionych instrukcjach istnieją jednak dwa specjalne zapisy, które mają swoją własną nazwę, tj. preinkrementacja (zmienna zaczynająca się znakami ++) oraz postinkrementacja (zmienna kończąca się znakami ++).

Preinkrementacja

Definicja

Preinkrementacja powoduje zwiększenie wartości zmiennej o jeden, ale jej zwiększenie następuje przed wykorzystaniem zmiennej.

Przykład

C/C++
#include <cstdio>

int main()
{
    int x = 10;
    int y = ++x; // Najpierw zostanie zwiększona wartość zmiennej x o jeden, a następnie zostanie użyta wartość 11
    printf( "x = %d; y = %d\n", x, y ); // x = 11; y = 11
    return 0;
}

Postinkrementacja

Definicja

Postinkrementacja powoduje zwiększenie wartości zmiennej o jeden, ale jej zwiększenie następuje po wykorzystaniu zmiennej.

Przykład

C/C++
#include <cstdio>

int main()
{
    int x = 10;
    int y = x++; // Najpierw zostanie użyta wartość 10, a następnie zmienna x zostanie zwiększona o jeden
    printf( "x = %d; y = %d\n", x, y ); // x = 11; y = 10
    return 0;
}

Dekrementowanie zmiennej

Dekrementacja jest to zmniejszenie wartości o jeden. Wartość zmiennej liczbowej można zmniejszyć o jeden za pomocą zapisów:
C/C++
--zmienna;
zmienna--;
zmienna -= 1;
zmienna = zmienna - 1;

Predekrementacja

Predekrementacja działa analogicznie do preinkrementacji z tą różnicą, że zmniejsza wartość zmiennej o jeden.

Postdekrementacja

Postdekrementacja jest analogiczna do postinkrementacji z tą różnicą, że zmniejsza wartość zmiennej o jeden.

Podsumowanie

Jeżeli jesteś na etapie nauki i trudno jest Ci zapamiętać różnicę pomiędzy preinkrementacją, a postinkrementacją, to staraj się pisać kod tak, aby unikać złożonych zapisów w kodzie. Innymi słowy: nie wykonuj kilku operacji w jednej linijce, aby skrócić kod. Pisz kod nieco dłuższy, który będziesz lepiej rozumiał. Wraz z nabieraniem doświadczenia i tak przyswoisz sobie jaka jest różnica między preinkrementacją, a postinkrementacją. Preinkrementacje i postinkrementacje zacznij stosować w instrukcjach złożonych wtedy, gdy już będziesz biegły w czytaniu dowolnego kodu C++.