Jak działają operatory post increment (i++) i pre increment (++i) w Javie?
Czy możesz mi wyjaśnić wyjście tego kodu Javy?
int a=5,i;
i=++a + ++a + a++;
i=a++ + ++a + ++a;
a=++a + ++a + a++;
System.out.println(a);
System.out.println(i);
Wyjście jest 20 w obu przypadkach
14 answers
Czy to pomaga?
a = 5;
i=++a + ++a + a++; =>
i=6 + 7 + 7; (a=8)
a = 5;
i=a++ + ++a + ++a; =>
i=5 + 7 + 8; (a=8)
Najważniejsze jest to, że ++a
zwiększa wartość i natychmiast ją zwraca.
a++
również zwiększa wartość (w tle), ale zwraca niezmienioną wartość zmiennej - co wygląda na to, że zostanie wykonana później.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-17 12:03:07
++a
przyrosty, a następnie używa zmiennej.a++
Używa, a następnie zwiększa zmienną.
Jeśli masz
a = 1;
I robisz
System.out.println(a++); //You will see 1
//Now a is 2
System.out.println(++a); //You will see 3
Codaddict wyjaśnia twój konkretny fragment.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-14 22:11:07
W obu przypadkach najpierw oblicza wartość, ale po inkrementacji zachowuje starą wartość i po obliczeniu zwraca ją
++a
- a = a + 1;
- return a;
A++
- temp = a;
- a = a + 1;
- return temp;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-20 05:10:19
i = ++a + ++a + a++;
Jest
i = 6 + 7 + 7
Praca : przyrost a do 6 (aktualna wartość 6) + przyrost a do 7 (aktualna wartość 7). Suma wynosi 13 Teraz dodaj ją do bieżącej wartości a (=7), a następnie zwiększ a do 8. Suma wynosi 20, a wartość a po zakończeniu zadania wynosi 8.
i = a++ + ++a + ++a;
Jest
i = 5 + 7 + 8
Working: na początku wartość a wynosi 5. Użyj go w dodatku, a następnie zwiększ do 6 (bieżąca wartość 6). Zwiększ a z bieżącej wartości 6 do 7, aby uzyskać inny argument+. Suma wynosi 12 a aktualna wartość a to 7. Następny przyrost a od 7 do 8 (aktualna wartość = 8) i dodać go do poprzedniej sumy 12, aby uzyskać 20.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-16 02:47:19
++a
przyrosty a
przed jego oceną.
a++
ocenia a
, a następnie ją zwiększa.
Związane z wyrażeniem podanym:
i = ((++a) + (++a) + (a++)) == ((6) + (7) + (7)); // a is 8 at the end
i = ((a++) + (++a) + (++a)) == ((5) + (7) + (8)); // a is 8 at the end
Nawiasy, których użyłem powyżej, są domyślnie używane przez Javę. Jeśli spojrzysz na terminy w ten sposób, łatwo zobaczysz, że są one takie same, jak są przemienne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-14 11:56:22
W powyższym przykładzie
int a = 5,i;
i=++a + ++a + a++; //Ans: i = 6 + 7 + 7 = 20 then a = 8
i=a++ + ++a + ++a; //Ans: i = 8 + 10 + 11 = 29 then a = 11
a=++a + ++a + a++; //Ans: a = 12 + 13 + 13 = 38
System.out.println(a); //Ans: a = 38
System.out.println(i); //Ans: i = 29
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-14 19:06:45
++a jest operatorem przyrostkowym:
- wynik jest obliczany i zapisywany jako pierwszy,
- wtedy zostanie użyta zmienna.
A++ jest operatorem przyrostowym postfixa:
- zmienna jest używana jako pierwsza,
- następnie wynik jest obliczany i zapisywany.
Gdy przypomnisz sobie zasady, EZ dla ciebie, aby obliczyć wszystko!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-29 16:02:46
Zakładając, że miałeś na myśli
int a=5; int i;
i=++a + ++a + a++;
System.out.println(i);
a=5;
i=a++ + ++a + ++a;
System.out.println(i);
a=5;
a=++a + ++a + a++;
System.out.println(a);
Ocenia się na:
i = (6, a is now 6) + (7, a is now 7) + (7, a is now 8)
Więc jestem 6 + 7 + 7 = 20 i tak drukuje się 20.
i = (5, a is now 6) + (7, a is now 7) + (8, a is now 8)
Więc jestem 5 + 7 + 8 = 20 i tak 20 jest ponownie wydrukowane.
a = (6, a is now 6) + (7, a is now 7) + (7, a is now 8)
I po obliczeniu całej prawej Strony (łącznie z ustawieniem a na 8), a jest ustawione na 6 + 7 + 7 = 20 i tak 20 jest drukowane po raz ostatni.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-18 16:16:57
Gdy a
jest 5, to a++
daje 5 do wyrażenia, a następnie zwiększa a
, podczas gdy ++a
zwiększa a
przed przekazaniem liczby do wyrażenia (co daje a
6 do wyrażenia w tym przypadku).
Więc Oblicz
i = 6 + 7 + 7
i = 5 + 7 + 8
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-14 11:51:35
Wierzę jednak, że jeśli połączysz wszystkie swoje wypowiedzi i uruchomisz je w Javie 8.1, otrzymasz inną odpowiedź, przynajmniej tak mówi moje doświadczenie.
Kod będzie działał tak:
int a=5,i;
i=++a + ++a + a++; /*a = 5;
i=++a + ++a + a++; =>
i=6 + 7 + 7; (a=8); i=20;*/
i=a++ + ++a + ++a; /*a = 5;
i=a++ + ++a + ++a; =>
i=8 + 10 + 11; (a=11); i=29;*/
a=++a + ++a + a++; /*a=5;
a=++a + ++a + a++; =>
a=12 + 13 + 13; a=38;*/
System.out.println(a); //output: 38
System.out.println(i); //output: 29
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-15 19:15:25
Pre-increment oznacza, że zmienna jest inkrementowana przed jej obliczeniem w wyrażeniu. Post-increment oznacza, że zmienna jest zwiększana po tym, jak zostanie obliczona do użycia w wyrażeniu.
Dlatego, przyjrzyj się uważnie, a zobaczysz, że wszystkie trzy zadania są arytmetycznie równoważne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-04 19:03:46
Pre-increment i post increment są równoważne, jeśli nie w wyrażeniu
int j =0;
int r=0
for(int v = 0; v<10; ++v) {
++r;
j++;
System.out.println(j+" "+r);
}
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 20:16:39
a=5; i=++a + ++a + a++;
Jest
i = 7 + 6 + 7
Działa: pre / post increment ma Asocjację "od prawej do lewej", a pre ma pierwszeństwo przed postem, więc przede wszystkim Pre increment zostanie rozwiązany jako (++a + ++a) => 7 + 6
. następnie a=7
podaje się post increment = > 7 + 6 + 7 =20
i a =8
.
a=5; i=a++ + ++a + ++a;
Jest
i=7 + 7 + 6
Działa: pre / post increment ma Asocjację "od prawej do lewej", a pre ma pierwszeństwo przed postem, więc przede wszystkim Pre increment zostanie rozwiązany jako (++a + ++a) => 7 + 6
.następnie a=7
jest dostarczane do Post increment = > 7 + 7 + 6 =20
i a =8
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-12 15:35:41
Wierzę, że wykonujesz wszystkie te stwierdzenia inaczej
wykonanie razem spowoduje => 38 ,29
int a=5,i;
i=++a + ++a + a++;
//this means i= 6+7+7=20 and when this result is stored in i,
//then last *a* will be incremented <br>
i=a++ + ++a + ++a;
//this means i= 5+7+8=20 (this could be complicated,
//but its working like this),<br>
a=++a + ++a + a++;
//as a is 6+7+7=20 (this is incremented like this)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-23 23:01:39