Nehmen wir an, wir haben die Klasse A
:
und 2 eigenständige Funktionen:
%Vor%jetzt in diesem Code:
%Vor% ist die Reihenfolge der Auswertung der Funktionen func3()
und func4()
definiert?
Nach dieser Antwort Nicht definierte Verhaltens- und Sequenzpunkte sind einer der Sequenzpunkte :
§1.9/17
). Also bedeutet "Auswertung aller Funktionsargumente", dass func3()
vor func4()
aufgerufen werden muss, da die Auswertung von func1()
Argumenten vor dem Aufruf von func2()
? stattfinden muss.
Der Kern davon ist, dass in einem Funktionsaufruf X(Y, Z)
; Auswertung aller X
, Y
, Z
sind in Bezug aufeinander unbestimmt sequenziert. Die einzige Sequenzierung besteht darin, dass Y
und Z
sequenziert sind-vor der Aufruf der Funktion, für die X
ausgewertet wurde.
Angenommen, wir haben:
%Vor% Die drei Funktionen a
, b
, c
können in beliebiger Reihenfolge aufgerufen werden. Dies gilt natürlich rekursiv für alle Unterausdrücke.
Tags und Links c++ order-of-evaluation