Partilhar via


Pontos de Sequência C

Entre "pontos de sequência" consecutivos, o valor de um objeto pode ser modificado apenas uma vez por uma expressão. A linguagem C define os seguintes pontos de sequência:

  • Operando esquerdo do operador lógico-AND (&&). O operando esquerdo do operador lógico-AND é completamente avaliado e todos os efeitos colaterais são concluídos antes de continuar. Se o operando esquerdo for avaliado como falso (0), o outro operando não será avaliado.

  • Operando esquerdo do operador lógico-OR (||). O operando esquerdo do operador lógico-OR é completamente avaliado e todos os efeitos colaterais são concluídos antes de continuar. Se o operando esquerdo for avaliado como true (diferente de zero), o outro operando não será avaliado.

  • Operando esquerdo do operador de vírgula. O operando esquerdo do operador de vírgula é completamente avaliado e todos os efeitos colaterais são concluídos antes de continuar. Ambos os operandos do operador de vírgula são sempre avaliados. Observe que o operador de vírgula em uma chamada de função não garante uma ordem de avaliação.

  • Operador de chamada de função. Todos os argumentos para uma função são avaliados e todos os efeitos colaterais são concluídos antes da entrada na função. Não é especificada qualquer ordem de avaliação entre os argumentos.

  • Primeiro operando do operador condicional. O primeiro operando do operador condicional é completamente avaliado e todos os efeitos colaterais são concluídos antes de continuar.

  • O fim de uma expressão de inicialização completa (ou seja, uma expressão que não faz parte de outra expressão, como o final de uma inicialização em uma instrução de declaração).

  • A expressão em uma instrução de expressão. As instruções de expressão consistem em uma expressão opcional seguida por um ponto-e-vírgula (;). A expressão é avaliada quanto aos seus efeitos secundários e existe um ponto de sequência após esta avaliação.

  • A expressão de controle em uma instrução de seleção (if ou switch). A expressão é completamente avaliada e todos os efeitos colaterais são concluídos antes que o código dependente da seleção seja executado.

  • A expressão controladora de uma while ou do declaração. A expressão é completamente avaliada e todos os efeitos colaterais são concluídos antes que quaisquer instruções na próxima iteração do while loop ou do sejam executadas.

  • Cada uma das três expressões de uma for declaração. As expressões são completamente avaliadas e todos os efeitos colaterais são concluídos antes que quaisquer instruções na próxima iteração do for loop sejam executadas.

  • A expressão em uma return declaração. A expressão é completamente avaliada e todos os efeitos secundários são concluídos antes de o controlo regressar à função de chamada.

Ver também

Avaliação da Expressão