Ordem de avaliação de subexpressões
Pergunta
Eu olhei SO/IEC 9899: 201x Sob J.1 comportamento não especificado:
"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)."
Isso significa que em
func1() + func2();
func2 () pode ser pré -formado antes do func1 () ou mesmo durante o func1 ()?
Solução
No padrão atual (ISO/IEC 9899: 1999), há um ponto de sequência entre chamadas de função, mas a ordem de avaliação dos operando para +
não é especificado func1
pode ser chamado antes ou depois func2
Mas as chamadas de função não devem se sobrepor ou ser intercaladas de forma alguma.
Isso significa que cada um de func1
e func2
pode, se desejar, interagir com alguns dados compartilhados sem que esses dados mudem de maneira inesperada.
Outras dicas
Não durante, mas com certeza, 1 então 2 ou 2, em seguida, 1.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow