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 ()?

Foi útil?

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
scroll top