Bearbeitung von if-Anweisungen
-
Hallo,
eine einfache Frage, ich habe eine if-Anweisung wie z.B.
if (A > B && !D) ...
In welcher Reihenfolge wird die Anweisung abgearbeitet? Von links nach rechts? Oder umgekehrt? Compiler abhängig?
Gruß
Stefan
-
Von links nach rechts (aber das hat nichts mit dem if() zu tun - die Operatoren && und || sehen Kurzschlußauswertung vor).
(Im allgemeinen Fall hängt es vom Compiler ab, in welcher Reihenfolge die unabhängigen Teile eines Ausdrucks ausgewertet werden. Das macht Ausdrücke mit Nebenbedingungen wie
k=++i + i;
auch so gefährlich.)
-
Hallo Stefan,
Unter http://www.icp.uni-stuttgart.de/Courses_and_Lectures/C++/script/node11.html#SECTION00358000000000000000 (Tabelle: Bindungsstärke (Priorität) und Assoziativität von Operatoren) gibts ne Zusammenfassung der Operatoren mit Ihrer Auswertungsreihenfolge und der Bindungsstärke
-
http://www.cppreference.com/operator_precedence.html
C++ Operator Precedence
-
Die Assoziativität hat mit der Auswertungsreihenfolge der Teilausdrücke nichts zu tun.