L-Wert (Programmierung)
# L-Wert (Programmierung)

In der Programmierung wird innerhalb von Anweisungen zwischen L-Wert- und R-Wert-Ausdrücken unterschieden. Ein Ausdruck innerhalb einer Anweisung besitzt einen L-Wert, wenn der Ausdruck auf einen Speicherort verweist. Ausdrücke, die keinen L-Wert besitzen, sind R-Wert-Ausdrücke.

Ein L-Wert zeigt somit auf adressierbaren Speicher. Das L bedeutet, dass ein L-Wert-Ausdruck auf der linken Seite einer Zuweisung stehen kann. R-Wert-Ausdrücke dürfen nur auf der rechten Seite von Zuweisungen vorkommen. L-Wert-Ausdrücke sind häufig Bezeichner von Datentypen (Objekten), können jedoch auch als Funktionsaufrufe oder als Dereferenzierung von Feldern oder Zeigern vorkommen. Alle L-Wert-Ausdrücke haben zugleich R-Werte, aber nicht jeder R-Wert besitzt einen L-Wert.

Auch temporär auftretende Objekte, sogenannte Temporaries zählen zu den R-Werten. Betrachten wir als Beispiel folgende Anweisung: x = a + (b * c); Hier entsteht als Zwischenwert das Ergebnis von b * c. Wenn x, a, b, und c Objekte einer Klasse sind, kann es sein, dass mit b * c ein temporäres Objekt (en: a temporary) entsteht, das bei der Zuweisung an x wieder zerstört wird. Um unnötiges Kopieren von Objektmembern zu vermeiden, bietet C++ den Move Constructor und den Move Assignment Operator an.

## Beispiele

Mögliche Ausgabe:

Anhand der Ausgabe ist ersichtlich, dass die L-Werte die Speicheradressen der L-Wert-Ausdrücke sind.

