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

Post-fix i pre-fix

+2 głosów
50 wizyt
pytanie zadane 5 dni temu 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 5 dni temu przez Mati323 Nowicjusz (210 p.)
Ok dzięki

2 odpowiedzi

+1 głos
odpowiedź 5 dni temu przez Wiciorny Ekspert (218,990 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ź 10 minuty temu 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ź 395 wizyt
pytanie zadane 2 lutego 2017 w C i C++ przez Dexterim Dyskutant (8,370 p.)
0 głosów
1 odpowiedź 403 wizyt
pytanie zadane 19 listopada 2015 w C i C++ przez krzakurts Obywatel (1,470 p.)

87,940 zapytań

136,519 odpowiedzi

304,382 komentarzy

58,305 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...