• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pytanie w jakiej kolejności wykonuje się inkrementację i dekrementację

Object Storage Arubacloud
0 głosów
305 wizyt
pytanie zadane 18 maja 2022 w C i C++ przez piratek098 Nowicjusz (160 p.)

Od niedawna uczę się programowania i mam problem ze zrozumieniem kolejności zrozumienia programowania. Mój korepetytor mówił mi, że kolejność wykonywania programowania zaczyna się od prawej do lewej strony, to czy w poniższym przykładzie wynik tego działania w konsoli powinien wynosić 3, a nie 4?

	int i = 3;
		
	cout << ++i << endl;

	system("pause");

Jeśli dobrze rozumiem, to liczba najpierw jest wczytywana w miejsce „i”, czyli 3, później liczba jest dodawana, czyli wynosi 4, ale, jako że „i” już było wywołane, to liczba się zmieni dopiero po późniejszym jej wywołaniu.
Mam nadzieję, że w miarę zrozumiale to wyjaśniłem. Problem polega na tym, że zamiast 3 wyświetla się 4 w konsoli.

Teraz próbuje dociec, co zrozumiałem źle, bo w sytuacji gdyby tekst czytało się od lewej do prawej, to wtedy rzeczywiście miałoby to sens. A może czytanie z lewej do pracy odnosi się tylko do znaku przyrównania?

1 odpowiedź

+2 głosów
odpowiedź 18 maja 2022 przez adrian17 Ekspert (345,160 p.)
edycja 19 maja 2022 przez adrian17

Mój korepetytor mówił mi, że kolejność wykonywania programowania zaczyna się od prawej do lewej strony

Co, nie, nie ma czegoś takiego. Ogólnie reguły kolejności wykonywania operacji w C++ie są złożone i nie będę tu się o nich rozpisywał, ale zwykłe wyrażenia matematyczne mają reguły łączności jak w zwykłej matematyce (a+b+c ma łączność od lewej do prawej etc).

Natomiast w Twoim przypadku to w ogóle nie ma znaczenia z kolejnością wykonywania działań czy łącznością.

Tak samo jak "-a" i "a-b" to są różne operatory (negacji i odejmowania) o różnych definicjach (a nie "jeden operator z różną kolejnością"), tak samo istnieje operator "i++" i operator "++i". Traktuj je jako niezależne twory. Ten pierwszy inkrementuje liczbę "po fakcie", a drugi "przed faktem"*. Więc u Ciebie `i` zostało zwiększone o 1 i wynik został wypisany na ekranie.

(*po angielsku dosłownie tak się na nie mówi, "post-increment operator" i "pre-increment operator")

Podobne pytania

0 głosów
3 odpowiedzi 362 wizyt
0 głosów
6 odpowiedzi 1,022 wizyt

92,623 zapytań

141,478 odpowiedzi

319,821 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...