Wpis z mikrobloga

Mirki, może mi ktoś wyjaśnić dlaczego w dwóch ostatnich linijkach poleceń println wychodzi najpierw 20, a potem 41? Coś mi tam umyka i nie do końca rozumiem w którym dokładnie momencie zachodzi post i preinkrementacja.

public static void main(String[] args) {
// write your code here
int i = 10;

System.out.println(i++); // 10
System.out.println(--i); // 10

--i; // 9
i--; // 8

System.out.println(i); // 8
System.out.println(++i); // 9
System.out.println(i--); // 9
System.out.println(i); // 8

i++; // 9
i = i++ + ++i; // 20

System.out.println(i); // 20

i = i++ + i++; // 41

System.out.println(i); // 41

}

#programowanie #java #javapomoc
  • 57
@69inch:

System.out.println(i); // 20

i =
i++ //(w tym momencie wartość i była 20 i po wzięciu jej do wyrażenia zmienia się na 21)
+
i++ // (w tym momencie wartość i była 21 i po wzięciu jej do wyrażenia zmienia się na 22)
; // czyli do sumy wzięto 20 + 21 = 41, wartość i jest 22, ale ten wynik sumy 41 na końcu przypisano do i nadpisując 22
jaki jest priorytet tego działania


@cevilo: Jest dokladnie taki sam przy post i pre inkrementacji.

co to są priorytety? Kolejność wykonywania działań?


@cevilo: To nie ma kompletnie znaczenia w tym wypadku.

@69inch: Obczaj jak wyglada przeciazenie operatorow post i pre inkrementacji w C++. W javie dziala to tak samo tylo nie mozesz zajzec do srodka.

No i nigdy wiecej nie sluchaj @cevilo po aktywnosci w watku widac ze doszedl
Zastanów się, co by było, gdyby przypisanie miało większy priorytet niż ++.


@cevilo: A jakby babcia miala wasy to by byla dziadkiem. Popisales sie niewiedza czym sie rozni pre od post inkrementacji i teraz strasz sie jakos glupio obronic. Wracaj do nauki, po petlach musisz nauczyc sie jeszcze duzo skladni.
@cevilo: Dobra masz dzien dziecka i wytlumacze ci jak debilowi.

przeczytaj co robi ++ w zależności w którym miejscu wstawiony, jaki jest priorytet tego działania


@cevilo: Priorytet tego dzialania nie ma najmniejszego znaczenia.

Dwie sytuacje
i = 1;

x = i++ + ++i - post inkrementacja ma priorytet czyli i++ wykona sie przed ++i
x = 3

x = i++ + ++i - pre inkrementacja ma priorytet czyli ++i wykona
@FortunaHej: Jesteś idiotą. Kluczowe w rozumieniu post, pre, wszystkich działań, przypisania, jest wiedza o kolejności wykonywwania działań. I ostatnia linijka odsiewa właśnia takich bałwanów jak ty, którzzy krzyczą o pre i post, które tu nie ma znaczenia. W ostatniej linijce wykorzystuje się fakt, że czy to pre czy post ma większy priorytet niż działania przypisania.
jest wiedza o kolejności wykonywwania działań.


@cevilo: NIEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

że czy to pre czy post ma większy priorytet niż działania przypisania.


@cevilo: Maja takie same wzgledem przypisania, nawet w linku ktory ty podales priorytet post i pre inkrementacji jest wiekszy niz przypisanie.

Na spokojnie zobacz sobie jak wyglada to w C++, bo kompletnie tego nie rozumiesz/
@cevilo: Jeszcze raz powoli bo widze ze trafilem na beton.

x = i++

Zwieksza i o 1, przypisuje wartosc z i do x.

x = ++i

Przypisuje wartosc i do tmp, zwieksza wartosc i o 1, przypisuje wartosc tmp do x.

Przypisanie w obu przypadkach ma taki sam priorytet, post i pre inkrementacja tez maja taki sam priorytet. Teraz rozumiesz?
@FortunaHej: przecież ja to napisałem, ja mu nie kazałem sprawdzać co ma wyższy priorytet, pre czy post, tylko jaki jest ich prioryet względem przypisania, na początku sprawdzana jest znajomość pre i post, a na kończu dodane jest testowanie jeszcze umiejscowienie tego względem przypisania. Masz wiedzę szkolną i jesteś mało inteligentny, musisz mieć wszystko wyłożone jak krowa do koryta. Zaglądnął by chłopak do linka, tak jak ty, dowiedział by się co to
@FortunaHej: No i ? Ja o tym wiem, on nie wiedział. Dziwiło go 41, bo wiedział tylko tyle co ty. Próbowałem zachęcić go do spojrzenia na tą tabelkę i odkrycie, że przypisanie to też działanie. Boże, jakiś ty głupi :)
@cevilo: Czego nie rozumiesz? Przypisanie nie ma znaczenai, post i pre inkrementacja jest wykonywana ZAWSZE przed przypisaniem. Priorytety nie maja znaczenia. ZNACZENIA MA TYLKO I WYLACZNIE ZMIENNA DO KTOREJ JEST PRZYPISYWANA WARTOSC W POST INKREMENTACJI.

x = i++

Zwieksza i o 1, przypisuje wartosc z i do x.

x = ++i

Przypisuje wartosc i do tmp, zwieksza wartosc i o 1, przypisuje wartosc tmp do x.


@FortunaHej: Odwrotnie, przybywanie z
@FortunaHej: To co ja napisałem, sprawdź sobie człoiweku co robu ++ w zależności od miejsca, czyli zapoznaj się z pre i post. Po przecinku napisałem, sprawdź jaki jest prioryetet tego działania. Czyli dokonaj umiejscowienia ++ względem innych działań, w tym względem przypisania. Gdyby to zrobił, to zadania byłoby dla niego oczywiste. Czego nie rozumiałeś w tym dośc prostym zdaniu, które napisałem?
@cevilo @FortunaHej panowie, zrobiło się gorąco, a nie tego chciałem. doceniam wasze starania ale muszę coś wtrącić. nie wiem czy dobrze was zrozumiałem w kwestii tej całej kolejności wykonywania działań łącznie z przypisaniem ale rozumiem, że najpierw wykonuje się działanie po prawej stronie znaku przypisania, a potem wynik przypisuje się do zmiennej po lewej stronie. jeśli to o to wam chodzi w waszym sporze to dalej średnio mnie to ratuje ale no
Po przecinku napisałem, sprawdź jaki jest prioryetet tego działania.


@cevilo: Do 3 razy sztuka bo kompletnie nie rozumiesz. Priorytet to jest ktore dzialanie wykona sie pierwsze, mam nadzieje ze to jest jasne.

i = 20
x = i++ + i++

Teraz wedlug twojej tabelki priorytet post i pre inkrementacji jest wiekszy od przypisania, jasne? To wedlug twojej tabelki.
1. Skoro priorytet i++ jest wiekszy od przypisania wykona sie najpierw czyli mamy: