next up previous contents
Nächste Seite: automatische Typumwandlung und Propagation Aufwärts: Ausdrücke Vorherige Seite: Unäre Operatoren   Inhalt

Zuweisungen und L-Werte

Allen bisher besprochenen Operationen Nachgeordnet sind die Zuweisungsoperatoren. Diese sind in mehrfacher Hinsicht besonders. Zum einen muß auf ihrer linken Seite ein Ausdruck stehen, der ein Speicherobjekt bezeichnet. Im einfachsten Falle ist dies der Name einer Variablen, aber auch andere Konstrukte (z.B. dereferenzierte Pointer oder indizierte Arrays) sind möglich. Zum zweiten werden Zuweisungen von rechts her ausgewertet.

Die einfachste Zuweisung geschieht mit dem Gleichheitszeichen =. Der linke Teilausdruck wird berechnet, und das Ergebnis an der durch den rechten Teilausdruck bezeichneten Speicherstelle gespeichert.

Dieses Gleichheitszeichen kann aber mit jedem Arithmetischen, bitweisen oder Schiebeoperator verbunden werden. Der Ausdruck


x += 12

ist dann identisch mit


x = x + 12

Oder auch


x >>= 3

mit


x = x >> 3

Da es sehr häufig vorkommt, das man 1 zu einer Variablen addieren oder subtrahieren muss, gibt es in C zwei weitere Operatoren extra zu diesem Zweck: ++ und --

Der Ausdruck


x++

ist dann identisch mit


x += 1

was nichts anderes ist, als


x = x + 1

und mit -- verhält es sich analog bezogen auf die Subtraktion.

Increment und Dekrementoperatoren sind jetzt aber nur noch unäre Operatoren und sind daher entsprechend hoch priorisiert.

Es ist auch ein Unterschied, ob diese Operatoren vor oder nach der Variablen stehen. In beiden Fällen wird zwar die Variable incrementiert bzw. dekrementiert, das Ergebnis des Ausdrucks ist aber ein anderes. Steht der Operator vor der Variablen, ist der Wert des Teilausdruckes der der Variablen nach der Operation, steht der Operator hinter der Variablen, ist der Wert des Teilausdruckes der der Variablen vor der Operation. So haben die Variablen x und y nach Ausführen des folgenden Codefragments


x=4;
y=x++;

die Werte 5 und 4, nach Ausführen des folgenden Codefragments


x=4;
y=++x;

hingegen 5 und 5.


next up previous contents
Nächste Seite: automatische Typumwandlung und Propagation Aufwärts: Ausdrücke Vorherige Seite: Unäre Operatoren   Inhalt
Thomas Neuhaus
2001-01-14