EMZETT.
Login

Assignment Operators (Zuweisungsoperatoren)

Kurz: Operatoren, die einer Variable einen Wert zuweisen — der einfachste ist =; kombinierte Varianten wie +=, -=, *= verbinden eine Berechnung direkt mit der Zuweisung.

Genauer: x += 5 ist eine Kurzschreibweise für x = x + 5 und spart Tipparbeit sowie Wiederholung des Variablennamens. Wichtig ist die Unterscheidung zum Vergleichsoperator == (siehe Vergleichsoperatoren) — eine Verwechslung von = und == in einer Bedingung ist ein klassischer, oft schwer zu findender Fehler.

Im Detail

Die gängigen zusammengesetzten Zuweisungsoperatoren:

x += 5    entspricht    x = x + 5     (addieren und zuweisen)
x -= 5    entspricht    x = x - 5     (subtrahieren und zuweisen)
x *= 5    entspricht    x = x * 5     (multiplizieren und zuweisen)
x /= 5    entspricht    x = x / 5     (dividieren und zuweisen)
x %= 5    entspricht    x = x % 5     (Modulo und zuweisen)

Über die reine Kürze hinaus haben zusammengesetzte Zuweisungsoperatoren einen praktischen Vorteil: Der Variablenname taucht nur EINMAL auf, statt zweimal wie bei der ausgeschriebenen Variante — bei langen oder komplexen Variablennamen (z. B. benutzer.warenkorb.gesamtsumme += artikelpreis statt der ausgeschriebenen, doppelt so langen Variante) reduziert das sowohl Tippaufwand als auch die Chance auf Tippfehler.

Die Verwechslung von = (Zuweisung) und == (Vergleich, siehe Vergleichsoperatoren) gehört zu den klassischen, hartnäckigen Programmierfehlern — in manchen Sprachen (klassisch C) ist if (x = 5) sogar syntaktisch gültig und weist x einfach den Wert 5 zu, statt einen Vergleich durchzuführen, wobei der Ausdruck dann zusätzlich noch als “wahr” gilt (weil 5 ungleich 0 ist) — das Programm läuft scheinbar normal weiter, verhält sich aber grundlegend falsch. Moderne Sprachen und Linter warnen inzwischen meist explizit vor einer Zuweisung innerhalb einer Bedingung, gerade wegen dieser Verwechslungsgefahr.

Ein Sonderfall ist die Inkrement/Dekrement-Kurzschreibweise (x++/x--), die eine Zuweisung um genau 1 noch weiter verkürzt — technisch eng verwandt mit den zusammengesetzten Zuweisungsoperatoren, aber in den meisten Sprachen als eigenes Operator-Paar behandelt, unter anderem weil es (je nach Position vor oder nach der Variable) den Wert VOR oder NACH der Erhöhung zurückgeben kann, was bei += nicht vorkommt.

Siehe auch: Operatoren, Comparison Operators