Menu
Coddy logo textTech

Postinkrementacja/postdekrementacja

Część sekcji Podstawy ścieżki C++ w Coddy. Lekcja 19 z 74.

W poprzedniej lekcji omówiliśmy operatory inkrementacji (++) i dekrementacji (--). Operatory te mają dwie formy: prefiksową i postfiksową.

Formę prefiksową zapisuje się przed zmienną (np. ++x lub --x), a formę postfiksową zapisuje się po zmiennej (np. x++ lub x--).

W praktyce ważne jest, by wiedzieć, której formy użyć. Na przykład w grze możesz śledzić wynik gracza za pomocą score++ po każdym trafieniu albo użyć --lives, aby od razu uwzględnić utratę życia przed sprawdzeniem, czy gra się skończyła. W pętlach wybór między zapisem przedrostkowym a przyrostkowym może wpływać na to, jaka wartość zostanie użyta w wyrażeniu przed aktualizacją lub po niej.

Różnica między tymi dwiema formami jest subtelna, ale ważna:

  • Forma prefiksowa: Zwiększa/zmniejsza zmienną, a następnie zwraca nową wartość.
  • Forma postfiksowa: Zwraca bieżącą wartość zmiennej, a następnie ją zwiększa/zmniejsza.

Oto przykład ilustrujący różnicę:

int x = 5;
int y = x++;
// y = 5, x = 6 (operator postfiksowy: y otrzymuje pierwotną wartość, a następnie x jest zwiększane)

int a = 5;
int b = ++a;
// b = 6, a = 6 (operator prefiksowy: najpierw a jest zwiększane, a następnie b otrzymuje nową wartość)

W pierwszym przypadku zmiennej y przypisywana jest pierwotna wartość x (5), a następnie x jest zwiększane do 6. W drugim przypadku zmienna a jest najpierw zwiększana, a następnie jej nowa wartość (6) jest przypisywana do b.

Ta sama logika dotyczy operatora dekrementacji:

int x = 5;
int y = x--;
// y = 5, x = 4 (postfiks: y otrzymuje pierwotną wartość, a następnie x jest zmniejszane o 1)

int a = 5;
int b = --a;
// b = 4, a = 4 (prefiks: najpierw a jest zmniejszane o 1, a następnie b otrzymuje nową wartość)
challenge icon

Wyzwanie

Początkujący

Otrzymujesz kod z inicjalizacjami zmiennych x, y i z. (Nie usuwaj tych wierszy!)

Twoim zadaniem jest użycie operatorów inkrementacji/dekrementacji do wykonania następujących operacji, w tej kolejności:

  1. Użyj operatora inkrementacji postfiksowej, aby przypisać bieżącą wartość x do a, a następnie zwiększyć x.
  2. Użyj operatora dekrementacji prefiksowej, aby zmniejszyć y i przypisać jego nową wartość do b.
  3. Użyj operatora dekrementacji postfiksowej, aby przypisać bieżącą wartość z do c, a następnie zmniejszyć z.

Po wykonaniu tych operacji wypisz wartości a, b, c, x, y i z w konsoli w następującym formacie:

a: [value of a]
b: [value of b]
c: [value of c]
x: [value of x]
y: [value of y]
z: [value of z]

Spróbuj swoich sił

#include <iostream>

int main() {
    int x = 10;
    int y = 20;
    int z = 30;
    
    int a, b, c;
    
    // Wpisz swój kod poniżej
    
    
    // Nie zmieniaj poniższych linii
    std::cout << "a: " << a << std::endl;
    std::cout << "b: " << b << std::endl;
    std::cout << "c: " << c << std::endl;
    std::cout << "x: " << x << std::endl;
    std::cout << "y: " << y << std::endl;
    std::cout << "z: " << z << std::endl;
    
    return 0;
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator C++ online