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ść)Wyzwanie
PoczątkującyOtrzymujesz 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:
- Użyj operatora inkrementacji postfiksowej, aby przypisać bieżącą wartość
xdoa, a następnie zwiększyćx. - Użyj operatora dekrementacji prefiksowej, aby zmniejszyć
yi przypisać jego nową wartość dob. - Użyj operatora dekrementacji postfiksowej, aby przypisać bieżącą wartość
zdoc, 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;
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory — część 1
Operatory arytmetyczneOperator moduloInkrementacja/dekrementacjaPostinkrementacja/postdekrementacjaSkrócone operatory arytmetyczneOperatory porównaniaPorównywanie ciągów znaków7Podstawy wejścia/wyjścia
Instrukcja coutInstrukcja cinWczytywanie ciągu znakówPowtórka — do 120Powtórka — prawda czy fałsz3Zmienne, część 2
Deklarowanie typówKonwencje nazewnictwaPowtórka — inicjalizacja zmiennychKonwersja typów, część 1Konwersja typów, część 26Podejmowanie decyzji
Instrukcja ifIf - elseInstrukcja switchOperator warunkowyPowtórzenie: if - elseZagnieżdżone if - elsePoćwicz samodzielnie: Kompilator C++ online