sottoespressioni ordine di valutazione
Domanda
Ho guardato SO / IEC 9899 : 201x sotto comportamento non specificato J.1:
"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)."
Fa questo significa che in
func1() + func2();
func2 () può essere preformato prima func1 (), o anche durante FUNC1 ()?
Soluzione
Nella attuale standard (ISO / IEC 9899: 1999) c'è un punto sequenza tra chiamate di funzione, ma l'ordine di valutazione degli operandi +
non è specificato in modo func1
può essere chiamato prima o dopo func2
ma le chiamate di funzione devono non sovrapporsi o essere intercalata in alcun modo.
Ciò significa che ognuno di func1
e func2
può, se desiderato, interagire con alcuni dati condivisi senza avere che modifica i dati sotto di essa in modo inaspettato.
Altri suggerimenti
Non durante, ma sicuro, sia 1 quindi 2 o 2 poi 1.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow