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

operator += C++

+1 głos
30,731 wizyt
pytanie zadane 17 listopada 2016 w C i C++ przez qlucha Obywatel (1,790 p.)
for (int i=0;i<=2;i++)
    {
        x+=x+100;
        x++;
        cout<<x<<endl;
    }


    iteracja 0 x=101
    iteracja 1 x=303
    iteracja 2 x=707

Z ciekawośći ucząc sie C++ wstawiłem do pętli kod jak wyżej u góry,
kompilator nie zgłosił błędu , ale wyniki sumowania mnie zaskoczyły,
liczyłem na wynik x=101,202,303 . gdzie popełniłem błąd?

'po zamianie operatora += na =+ wyniki wychodzą takie jak chciałem 
czy ten pierwszy to jest błedny zapis czy spełnia on inna funkcje
niż dodaj do zmienniej wszystko po prawej stronie'
dzieki za odpowiedz. (Wiem że kod jest prosty i mozna bylo go zapisac lepiej ale chodzi mi o zrozumienie mechaniki działania C++)

3 odpowiedzi

+3 głosów
odpowiedź 17 listopada 2016 przez Porcupine Nałogowiec (31,560 p.)
Operator += dodaje wartość po prawej stronie do wartości znajdującej się w danej zmiennej czyli:

x += y jest równoważne x = x + y

W Twoim przypadku:

Iteracja 0:

   Linia 3: x += 0 + 100  --> x += 100 --> x = 0 + 100 (bo wstępnie x = 0)
   Linia 4: x++ --> x = 101

Iteracja 1:

   Linia 3: x += 101 + 100 --> x = 101 + 101 + 100 = 302

   Linia 4: x ++ --> x = 303

Iteracja 2:

   Linia 3: x += 303 + 100 --> x = 303 + 303 + 100 = 706

   Linia 4: x ++ --> x = 707
+2 głosów
odpowiedź 17 listopada 2016 przez niezalogowany
edycja 18 listopada 2016
Przypadek x+=(x+100); oznacza on to samo co x=x+(x+100);

Natomiast x=+(x+100) interpretowane jest jako to x=(x+100) co można też zapisać jak x+=100;
1
komentarz 17 listopada 2016 przez niezalogowany
W pierwszym sposobie masz operację z c++. Drugi to matematyka.
0 głosów
odpowiedź 17 listopada 2016 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Cześć,

Nie wiem czy jeszcze myślę logicznie o tej godzinie, ale problem jest chyba tutaj

x+=x+100;

Chciałeś dać tutaj chyba

x = x + 100

albo

x += 100

Pozrawiam :)

Podobne pytania

0 głosów
1 odpowiedź 253 wizyt
0 głosów
2 odpowiedzi 945 wizyt
pytanie zadane 22 marca 2020 w C i C++ przez wall7489 Obywatel (1,280 p.)
0 głosów
0 odpowiedzi 995 wizyt
pytanie zadane 15 grudnia 2018 w C i C++ przez Używtkownik Nowicjusz (120 p.)

93,425 zapytań

142,421 odpowiedzi

322,647 komentarzy

62,787 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
...