Unterausdrücke Auswerteauftrag
Frage
Ich habe unter SO / IEC 9899 : 201x unter J.1 unspezifisch Verhalten:
"The order in which subexpressions are evaluated and the order in which side effects
take place, except as specified for the function-call (), &&, ||, ?:, and comma
operators (6.5)."
Ist dies bedeutet, dass in
func1() + func2();
func2 () vor func1 vorgeformten werden () oder sogar während func1 ()?
Lösung
In der aktuellen Norm (ISO / IEC 9899: 1999) gibt es eine Folge Punkt zwischen Funktionsaufrufen, aber die Reihenfolge der Auswertung der Operanden zu +
nicht angegeben, so func1
vor aufgerufen werden kann oder nach func2
aber die Funktion aufruft, muss nicht überlappen oder in irgendeiner Art und Weise verschachtelt werden.
Das bedeutet, dass jede der func1
func2
und kann, falls erwünscht, die Interaktion mit einigen gemeinsam genutzten Daten, ohne dass die Datenänderung in einer unerwarteten Art und Weise unter ihn hat.
Andere Tipps
Nicht während, aber sicher, entweder 1, dann 2 oder 2 dann 1.