C++ Operator += und -= verstehe ich nicht. Hilfe?

7 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Diese kombinierten Operatoren führen eine Berechnung aus und weisen gleichzeitig der Variable den Wert zu.

x = 5 ( x hat jetzt den Wert 5)
x += 5 ( x hat jetzt den Wert 10)
x -=5 ( x ist wieder 5)
x *=5 ( x hat jetzt das Produkt 25)
x++ ( x ist jetzt 26 )

Eine Besonderheit:

y = x++ ( y bekommt den Wert von x + 1, x wird aber erst danach erhöht. Klingt verwirrend ist aber so )

zum Untersschied

y = ++x ( y bekommt den Wert von x +1, x wird aber vorher bereits erhöht. )

x** oder x// gibt es nicht.

Woher ich das weiß:Berufserfahrung – Assistent Production Manager of Microsoft Inc. iR
Zenpai 
Fragesteller
 21.06.2021, 11:16

Die Besonderheit habe ich wörtlich verstanden aber was bringt es den etwas vorher oder nachher zu erhöhen? also meine Konsole und den Zusammenhang mit dem Code habe ich geblickt. was genau passiert da aber wirklich am ende kommt doch eh das selbe Ergebnis oder nicht ?

0
geri3d  21.06.2021, 11:22
@Zenpai

Es macht schon einen Unterschied. Den zu erklären sprengt den Rahmen hier.

1

id <OP>= val ist eine verkürzte Schreibweise für id = id <OP> val. Also aus x*=2 wird eben x=x*2. Es erspart unnötige Schreibarbeit.

++ ist das Inkrement und -- das Dekrement.

--------

Gehen wir mal auf die technische Seite:

Nehmen wir an der Wert von id liege in einem Register, dann lassen sich Preinkrement und Predekrement auf INC <reg> und DEC <reg> abbilden.

Und Du wirst es vielleicht schon erraten haben: x+=5 kann auf ADD <reg>,5 abgebildet werden.

(Auf Maschinenebene ist also ggf. das Zielregister immer auch einer der Operanden - das hängt allerdings von der uARCH ab und da ist eien Darstellung in der Hochsprache, die dem entgegen kommt, natürlich praktisch im Sinne der Abbildung)

Verkürzen ist nur eine Syntax.

Du brauchst den Variablennamen nur einmal statt zweimal anzugeben.

Bei

i = j + 5

hast du eine Variable j, die du liest und eine Variable i, die du veränderst.

Bei deinen Operatoren ist die zu lesende Variable und die zu verändernde Variable identisch.

Bei dieser Voraussetzung gibt es kürzere Schreibweisen, damit man nicht so viel lesen muss.

Bei i++ sehe ich, dass nur eine Variable zum Lesen und Verändern da ist.

Zenpai 
Fragesteller
 21.06.2021, 10:36

ja aber warum ergibt i++ in der Konsole eine 9 ? ö_Ö

0
Rammstein53  21.06.2021, 10:38
@Zenpai

@Zenpia Weil vor der Anweisung anzahl++; die Variable anzahl den Wert 8 enthält. Im Code steht anzahl++; nicht i++;

2
Zenpai 
Fragesteller
 21.06.2021, 10:42
@Rammstein53

jetzt blick ich gar nichts mehr woher kommt den jetzt die 8 ? laut code "int anzahl = 2; " habe ich doch eine 2 oder nicht ?

0
Rammstein53  21.06.2021, 10:44
@Zenpai

Die Variable anzahl wird mit dem Wert 2 initialisiert, aber in den folgenden Operationen verändert.

anzahl = 2;

anzahl += 5;

Dann steht in anzahl der Wert 7.

2
Zenpai 
Fragesteller
 21.06.2021, 11:01
@Rammstein53

okay aber warum ist weiter unten beim code "anzahl++;" in der Konsole die 9. Weil du ja schriebst es enthält die Variable 8 richtig ? die 8 kommt also von anzahl+=5 ? Der Wert ist dann doch aber 7 und müsste in der Konsole doch 8 statt 9 werden oder nicht ? xD

0
Zenpai 
Fragesteller
 21.06.2021, 11:09
@Zenpai

okay habe es weiter unten verstanden ! Danke euch allen !

1

Programmierer/Entwickler sind faul.

Es gibt prettifyer, autovervollständigung und eben auch Kurzschreibweisen.

In vielen Sprachen gibt es verkürxte Synthax, wie zb in c#, wo du anstatt:

x = x + 5

Das schreiben kannst:

x += 5

Es bedeutet dasselbe, nur ist es eben eine verkürzte schreibweise um die paar Zeichen nicht tippen zu müssen.

Zenpai 
Fragesteller
 21.06.2021, 11:06

xD. das verstehe ich. Alle nehmen immer das Beispiel mit dem +. Wie ist es den mit - , * und / . Da explodiert mein Gehirn in 1000 Teile ums mal Bildlich darzustellen. Warum wird bei " anzahl -=3; " in der Konsole eine 4 wenn doch x = x - 4 mit " int anzahl = 2; " doch theoretisch laut x = x - 3 also x = 2-3 eine 1 sein müsste?

0
Zenpai 
Fragesteller
 21.06.2021, 11:18
@Zenpai

okay weiter unten verstanden ! Danke dir.

0

Mit "Verkürzen" ist nur weniger Schreibarbeit bei der Code-Erstellung gemeint.

Anstatt

anzahl += 5;

könnte man auch

anzahl = anzahl + 5;

schreiben. Die erste Schreibweise ist eben "kürzer".

Zenpai 
Fragesteller
 21.06.2021, 10:40

okay und warum wird bei anzahl- = 3; in der Konsole zu einer 4 ? das ist es was ich nicht ganz begreife.

0
Tannibi  21.06.2021, 10:58
@Zenpai

Vorher hast du aus "anzahl" durch += 5 7 gemacht.
Durch -= 3 wird daraus 4.

1
Zenpai 
Fragesteller
 21.06.2021, 11:08
@Tannibi

AHAA !! okay. verstehe das ist fortlaufend. sag das doch einer. Das steht ja auch nirgendwo. Okay okay habs verstanden. Danke dir Tannibi und den anderen. =)

0
Dultus, UserMod Light   21.06.2021, 11:20
@Zenpai

Du hast also gedacht, dass Anzahl immer 2 wäre bei den Rechnungen? :o)

Das ist der Sinn des Symbols "=" rechnen und zuweisen. :D

0