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

Wyświetlanie preinkrementacji C++ czyli cout << ++a

42 Warsaw Coding Academy
0 głosów
317 wizyt
pytanie zadane 16 maja 2017 w C i C++ przez Dawid Kreft Początkujący (420 p.)
Witam

Doskonale zdaje sobie sprawę z pre i post-inkrementacji.

I o ile poniższy przypadek :

int a=1;

cout << a++ << " " << a++ << " " a++;

Analizuję w ten sposób , że idziemy od prawej strony czyli wyświetlamy a , następnie dodajemy a+1 , dalej wyświetlamy a+1 i dodajemy a+1+1 i wyświetlamy czyli otrzymujemy :  3 2 1.

Nie mam pojęcia co się dzieję i jak analizować poniższe przypadki:

int a=1;

cout << ++a << " " << ++a << " " ++a;

 

lub int a =1 ;

cout << a++ " " << ++a << " " << ++a + a++ ;

 

Pozdrawiam

1 odpowiedź

–1 głos
odpowiedź 16 maja 2017 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
wybrane 16 maja 2017 przez Dawid Kreft
 
Najlepsza
Różnica jest taka:

int a = 1

a++ wykonauje pierw operacje/funkcje na a, a następnie inkrementuje a, czyli np. cout wyświetli 1, ale potem a będzie równe 2.

++a wykonuje najpierw inkrementacje, a następnie operacje/funkcje, czyli np. cout wyświetli 2, bo był 1 inkrementowane do 2, dalej w kodzie a tekaże będzie miało 2.
komentarz 16 maja 2017 przez Dawid Kreft Początkujący (420 p.)
W takim razie możesz odnieść się do tego przypadku ?

int a=1;

cout << ++a << " " << ++a << " " ++a;

Jaka Twoim zdaniem będzie odpowiedź?
komentarz 16 maja 2017 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
Przeanalizujmy go krok po kroku:

1. Deklarujemy, że a = 1

2. Inkrementujemy, że a = 2

3. Inkrementujemy, że a = 3

4. Inkrementujemy, że a =4

5. Wyświetlamy a a a, czyli 4 4 4.
komentarz 16 maja 2017 przez redie Obywatel (1,490 p.)
A czy nie powinno wyświetlić się:

2,3,4 ? :D
komentarz 16 maja 2017 przez tangarr Mędrzec (155,180 p.)

Zobacz sobie taki przykład:

std::cout << ++a << " " << a++ << " " << ++a << " " << a++ << std::endl;
1
komentarz 16 maja 2017 przez unknown Nałogowiec (39,560 p.)
To jest UB(a od C++17 unspecified behaviour)

Podobne pytania

–1 głos
3 odpowiedzi 1,835 wizyt
0 głosów
1 odpowiedź 724 wizyt
pytanie zadane 21 sierpnia 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
+2 głosów
2 odpowiedzi 14,901 wizyt

93,395 zapytań

142,389 odpowiedzi

322,569 komentarzy

62,753 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...