Heim >Backend-Entwicklung >C++ >Was ist die Parameterauswertungsreihenfolge in C und C?
Parameterauswertungsreihenfolge in C und C
Die Auswertungsreihenfolge von Funktionsparametern in C und C ist ein wichtiger Gesichtspunkt für Entwickler. Sowohl die C99- als auch die C11-Standards legen fest, dass die Reihenfolge der Bewertung nicht explizit definiert ist. Dies bedeutet, dass der Compiler die Auswertungsreihenfolge frei bestimmen kann.
Es ist jedoch wichtig zu beachten, dass alle Nebenwirkungen der Auswertung von Argumentausdrücken wirksam werden müssen, bevor die Funktion in C aufgerufen wird. Mit anderen Worten, alle Änderungen an Variablen oder anderen Zuständen müssen vorgenommen werden, bevor der Funktionskörper ausgeführt wird.
Der C-Standard besagt außerdem, dass die Auswertungsreihenfolge des Postfix-Ausdrucks und der Argumentausdrucksliste nicht spezifiziert ist. Dies bedeutet, dass der Compiler die Reihenfolge bestimmen kann, in der diese Ausdrücke ausgewertet werden.
Im Gegensatz dazu legt der C11-Standard fest, dass es einen Sequenzpunkt nach den Auswertungen des Funktionsbezeichners und der tatsächlichen Argumente, aber vor dem eigentlichen Aufruf gibt . Dies bedeutet, dass die Auswertung der eigentlichen Argumente von der Ausführung des aufgerufenen Funktionskörpers getrennt ist.
Bezüglich der Implementierung von Funktionsaufrufen schreiben weder die C- noch die C-Standards vor, dass sie den Hardware-Stack verwenden müssen. Dies ist ein Implementierungsdetail, das dem Compiler-Autor überlassen bleibt. Während viele Architekturen Parameter über einen Hardware-Stack übergeben, trifft dies nicht allgemein zu.
Das obige ist der detaillierte Inhalt vonWas ist die Parameterauswertungsreihenfolge in C und C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!