subexpresiones orden de evaluación
Pregunta
He mirado en SO / IEC 9899 : 201x bajo comportamiento no especificado 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)."
¿Esto significa que en
func1() + func2();
func2 () puede ser preformado antes de func1 (), o incluso durante func1 ()?
Solución
En el estándar actual (ISO / IEC 9899: 1999) hay un punto de secuencia entre las llamadas de función, pero el orden de la evaluación de los operandos a +
no se especifica de manera func1
puede ser llamado antes o después de func2
pero las llamadas de función debe no se superponen o se intercalan de forma alguna.
Esto significa que cada uno de func1
y func2
puede, si se desea, interactuar con algunos datos compartidos sin tener que el cambio de datos en virtud del mismo de una manera inesperada.
Otros consejos
No durante, pero seguro, ya sea 1 y luego 2 o 2 y luego 1.