Verbundzuweisungen in C [] (Verbundzuweisungen in C), Lektion, Seite 722914
https://www.purl.org/stefan_ram/pub/verbundzuweisungen_c (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Verbundzuweisungen in C 

Einführendes Beispiel

Das folgende Beispiel zeigt, wie eine numerische Variable zunächst auf 2 gesetzt und dann mit dem Operator »+=« um 3 erhöht wird.

main.c
#include <stdio.h>

int main( void )
{ int i = 2;
i += 3;
printf( "%d\n", i ); }
stdout
5

Einige Anfänger glauben, daß »i + 3« in dem folgenden Programm den Wert der Variablen »i« um 3 erhöht. Doch dies ist nicht der Fall.

main.c
#include <stdio.h>

int main( void )
{ int i = 2;
i + 3;
printf( "%d\n", i ); }
stdout
2

Die Auswertung von »i += 3« bewirkt nun aber tatsächlich das, was mancher zu Unrecht schon von »i + 3« erwartet: Sie erhöht den Wert von »i« um 3. Da »i += 3« also Erwartungen von Anfängern erfüllt, dürfte es recht intuitiv verständlich sein.

Syntax

vereinfachte Syntax
Ausdruck
.----------. .--. .----------.
--->| Ausdruck |--->( += )-->| Ausdruck |--->
'----------' '--' '----------'

Begriffe

Die Operatoren »=« und »+=« werden zusammenfassend als „Zuweisungsoperatoren“ beschrieben.

Typanforderungen

Dieser Operator kann auf beiden Seiten einen Operanden vom Typ »int« oder vom Typ »double« haben.

Priorität

Die Priorität des Operators »+=« ist wie die des Operators »=«.

Assoziativität

Die Zuweisungsoperatoren sind rechtsassoziativ. »a=b+=c« bedeutet also »a=(b+=c)«.

Semantik

»v  += a « (mit einem beliebigen Ausdruck »a «) ist eine Abkürzung für »v  = v  + (a )« (abgesehen davon, daß »v« in »( v  += a  )« nur einmal ausgewertet wird).

Wert

Der Wert von »a+=b« ist der Wert von »a+b«.

Wirkung

Der Wert von »a+b« wird nach »a« geschrieben.

Beispiel

In dem folgenden Beispiel wird im ersten printf-Aufruf die Summe »2 + 3.9«, also »5.9« nach »i« geschrieben. Dabei werden die Nachkommastellen abgeschnitten, da »i« eine int-Variable ist. Der Wert von »i += 3.9« ist der Wert von »i« nach dieser Schreiboperation. Die folgende Anweisung zeigt, daß »i« nun tatsächlich den Wert »5« enthält.

main.c
#include <stdio.h> 

int main( void )
{ int i = 2;
printf( "%d\n", i += 3.9 );
printf( "%d\n", i ); }
stdout
5
5

Weitere Operatoren

Auch für einige andere binäre Operatoren, sind entsprechende Kurzformen der Zuweisung definiert, so gibt es die folgenden Zuweisungsoperatoren: »+=«, »-=«, »*=«, »/=«. Für deren Priorität, Assoziativität und Semantik gilt das oben schon für »+=« Gesagte entsprechend.

Beispielsweise kann der Wert einer double-Variablen »x« durch Auswertung von »x *= 1.05« um 5 % vergrößert werden.

main.c
#include <stdio.h>

int main( void )
{ double x = 100; x *= 1.05;
printf( "%g\n", x ); }

Übungsfragen

?   Ausdrücke lesen

Können Sie ohne das folgende Programm zu starten, vorhersagen, was es ausgibt?

main.c
#include <stdio.h>

int main( void )
{ int x = 1; int o = 2; o+=x=+o;
printf( "%d\n", o );
printf( "%d\n", x ); }

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722914 stefan_ram:722914 Verbundzuweisungen in C Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722914, slrprddef722914, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/verbundzuweisungen_c