C++ Operator += und -= verstehe ich nicht. Hilfe?
Hallo Community,
ich lerne gerade über das Buch "Einstieg in C++ von Thomas Theis". Darin wird mir gerade der Operator += , -=, /= , *= und ++ sowie -- beigebracht. Ich verstehe aber nicht ganz wie sich die Rechnung umsetzt. Habe es mir schon mehrmals durchgelesen aber verstehe es nicht.
Der Code ist folgender den ich geschrieben habe :
wieso sind die Ergebnisse jetzt die welche die Konsole rausgibt?
verstehe das mathematisch nicht. Im Buch steht: Der Inkrement-Operator ++ führt zu einer Erhöhung des Werts einer Variablen um 1. anzahl=anzahl+1 wird also verkürzt. anzahl=anzahl-1 wird durch den Dekrement-Operator -- verkürzt.
Was meint der mit "verkürzen" ????
Kann mir einer diese Formulierung erklären bitte?
7 Antworten
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.
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.
@Zenpia Weil vor der Anweisung anzahl++; die Variable anzahl den Wert 8 enthält. Im Code steht anzahl++; nicht i++;
jetzt blick ich gar nichts mehr woher kommt den jetzt die 8 ? laut code "int anzahl = 2; " habe ich doch eine 2 oder nicht ?
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.
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
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.
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?
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".
okay und warum wird bei anzahl- = 3; in der Konsole zu einer 4 ? das ist es was ich nicht ganz begreife.
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 ?