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

Post-fix i pre-fix

Object Storage Arubacloud
+2 głosów
215 wizyt
pytanie zadane 14 maja 2022 w Java przez Mati323 Nowicjusz (210 p.)
Hej. Czy mógłby mi ktoś wytłumaczyć kiedy można stosować a kiedy trzeba operatory post i pre ?

Oraz jak to działa że operator post najpierw zwraca a później zmienia a pre na odwrót dlaczego tak właśnie ?
komentarz 14 maja 2022 przez Mati323 Nowicjusz (210 p.)
Ok dzięki

2 odpowiedzi

+1 głos
odpowiedź 14 maja 2022 przez Wiciorny Ekspert (269,710 p.)

 kiedy można stosować a kiedy trzeba operatory post i pre 

Nie ma pojęcia "Trzeba" -> to nie jest wymóg, jeśli w programie istnieje POTRZEBA używania post/pre fixu to wtedy należy z nich korzystać, dla przykładu pętla jest takim przykładem, aby ułatwić jej działanie w starym stylu kiedy chcemy określić jakiś zakres i co się ma dziać ze zmienną np .

for (int i=0;i<5;i++) // z postfixem dla zmiennej i

Co to oznacza? Że zmienna i - będzie zwiększona wartością dopiero po upływie pierwszej pętli   Natomiast jeśli zmienna jest inkrementowana jako prefix, to jej wartość jest zwiększona natychmiastowo zobacz przykład: 

int i = 1, j; // ustawiamy i na 1 

j = ++i; // jeśli następnie wypiszesz zmienna j wynikiem i oraz j jest 2 

po wypisaniu
wynik to :  i = 2 and  j = 2

dlaczego? Bo zmienna i w aktualnym wykonaniu jest zwiększona o 1. 
Jeśli zrobisz post inkrementacje  to wyniki będą zgoła inne : 

int i = 1, j; 
j = i++; // najpierw przypisze zmienna i do j potem zwiększy i

wynik:
 zmienne :  i=2 and j = 1

// teraz zauważ ze zmienna j ma wartość 1 

czyli zwiększenie wartosci zmiennej i następuje po przypisaniu jej do zmiennej J, a nie przed. Dopiero w następnym wykonaniu  przypisując zmienna i do jakiejś zmiennej ma ona wartość o 1 większą.
Dlaczego? 

BO LICZY SIĘ KOLEJNOŚĆ WYKONANIA OPERATORÓW W JAVIE, A KOD CZYTANY JEST PRZEZ KOMPILATOR POKOLEI OD LEWEJ DO PRAWEJ. 
Stąd w zapisie ++ zmienna ( operator ++ występuje przed samą wartością zmiennej), natomiast w zapisie zmienna ++ ( operator występuje po zmiennej, więc jako pierwsza zostanie odczytana wartość ZMIENNEJ samej) natomiast w porównaniu i przypisaniu to wina tego ze znak równa się oczekuje na 1 element na stosie.


Postfix i prefix może również być zmniejszeniem zmienne np :

--zmienna;
zmienna--; // analogicznie zmniejsza wartosc po aktualnej lini 

 

0 głosów
odpowiedź 19 maja 2022 przez Czarus0 Obywatel (1,040 p.)
Cześć! Nie ma żadnej zasady, kiedy stosować post-, a kiedy preinkrementacje. Wszystko zależy od aktualnej potrzeby.

Co do zasady dlaczego tak działa, to chyba trzeba mieć jakieś podstawy językowe, z których tworzymy wyższe struktury. Są to pewnego rodzaju założenia, umowy, które trzeba przyjąć jako fundament.

Pozdrawiam!

Podobne pytania

+1 głos
1 odpowiedź 628 wizyt
pytanie zadane 2 lutego 2017 w C i C++ przez Dexterim Dyskutant (8,370 p.)
0 głosów
1 odpowiedź 507 wizyt
pytanie zadane 19 listopada 2015 w C i C++ przez krzakurts Obywatel (1,470 p.)

92,553 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 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!

...