Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

C

Home Anweisungen logische Operatoren weitere Möglichkeiten für Variablendeklarationen

7.4 Prioritäten

Vergleiche Sie einmal das Ergebnis der beiden folgenden Ausdrücke:

...
i1 = 12 * 3 + 5;
i2 = 12 + 5 * 3;

Das erste Beispiel sollte 41 ergeben, das zweite 27. Also hat wohl die Punktrechnung eine höhere Rangfolge als die Strichrechnung. Genau wie man es in der Schule gelernt hat. Die Rangfolge der Operatoren ist im Kapitel Priorität der Operatoren aufgeführt. Wenn zwei Operatoren die gleiche Priorität haben, ist nicht definiert, in welcher Reihenfolge sie ausgeführt werden. Dies kann zu Problemen führen, wenn sich ein Programm darauf verläßt. Nehmen wir als Beispiel eine Addition von 2 Funktionsaufrufen: x = f() + g() Wenn sowohl f als auch g eine Variable ändern, von der das Ergebnis von f und g abhängt, kann eine andere Reihenfolge zu einem anderen Ergebnis von x führen.

Bei den logischen Operatoren AND und OR wird üblicherweise eine Auswertung von links her solange vorgenommen, bis das Ergebnis feststeht. Ein Beispiel, das zwar nicht unbedingt guter Programmierstil ist, aber die Gefahr dieser Auswertung verdeutlicht:

...
k = 10;
l = 12;
j = 3;
i = ( l < k) && (j = 10);

Welchen Wert hat j? Es ist 3, denn l ist größer als k. Damit steht der Wert des logischen AND schon fest. Ein falsch verknüpft mit irgendwas liefert immer falsch. Der zweite Ausdruck wird deshalb nicht mehr ausgewertet und damit bekommt j nicht den Wert 10 zugewiesen.

Als Fazit bleibt, daß man niemals so programmieren sollte, daß man sich darauf verläßt, daß bestimmte Teile eines Ausdrucks in einer bestimmten Reihenfolge ausgeführt werden! Solche Seiteneffekte können zu schwer zu findenden Fehlern führen.


Home Anweisungen logische Operatoren weitere Möglichkeiten für Variablendeklarationen


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum