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

operator += C++

+1 głos
31,148 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ź 330 wizyt
0 głosów
2 odpowiedzi 1,071 wizyt
pytanie zadane 22 marca 2020 w C i C++ przez wall7489 Obywatel (1,280 p.)
0 głosów
0 odpowiedzi 1,075 wizyt
pytanie zadane 15 grudnia 2018 w C i C++ przez Używtkownik Nowicjusz (120 p.)

93,692 zapytań

142,611 odpowiedzi

323,221 komentarzy

63,220 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...