4.3. Zusammengesetzte Zuweisungsoperatoren
C verfügt über einige ungewöhnliche Operatoren, die unter bestimmten Umständen eine verkürzte Schreibweise für Zuweisungen zulassen. Wenn eine Variable, die links von einem Zuweisungsoperator steht (der also ein Wert zugewiesen wird), auch im Ausdruck rechts des Zuweisungsoperators vorkommt, dann kann das zweimalige Schreiben dieses Variablennamens durch Verwendung zusammengesetzter Zuweisungsoperatoren vermieden werden. Wenn z.B. der Wert der Variablen iTemp um 10 erhöht werden soll, dann geschieht dies gewöhnlich mit folgender Anweisung:
iTemp = iTemp + 10;
Mit Hilfe eines zusammengesetzten Zuweisungsoperators kann diese Anweisung folgendermaßen reduziert werden:
iTemp += 10;
Wenn op= eine allgemeine Schreibweise für zusammengesetzte Zuweisungsoperatoren ist, dann ist der Ausdruck
variable op= ausdruck;
gleichbedeutend mit
variable = variable op (ausdruck);
Es ist zu beachten, daß der Teilausdruck in Klammern vor dem Operator op ausgewertet wird. Beispielsweise wird in
ulSum /= 8 + 3;
die Addition vor der Division ausgeführt, da die ganze Anweisung ja synonym mit
ulSum = ulSum / (8 + 3);
ist.
Mehrfachzuweisungen unter Verwendung von zusammengesetzten und einfachen Zuweisungsoperatoren sind möglich. Beide sind von rechts nach links assoziativ. Ein Ausdruck, der mehrere Zuweisungen beiderlei Art enthält, wird also von rechts nach links bewertet.
lSum = iCount *= 3;
weist zuerst der Variablen iCount das Dreifache ihres ursprünglichen Werts zu und anschließend der Variablen lSum den aktualisierten Wert von iCount.
Weitere Beispiele:
fBetrag *= 1.15; /* fBetrag = fBetrag * 1.15 */
uRest %= 10; /* uRest = uRest % 10 */
/* ulQuadrat = ulQuadrat * ulQuadrat */
ulQuadrat *= ulQuadrat;
iDiff -= 3 - 5; /* iDiff = iDiff - (3 - 5) */
Zusammengesetzte Zuweisungsoperatoren können mit allen binären arithmetischen und mit Bit-Operatoren gebildet werden.