Analise as assertivas a seguir sobre pontos de sequência (se...

Próximas questões
Com base no mesmo assunto
Q4305772 Programação
Analise as assertivas a seguir sobre pontos de sequência (sequence points) e efeitos colaterais nos padrões C++ anteriores ao C++11, conceito historicamente compartilhado com a linguagem C e formalizado pelo padrão ISO/IEC 9899:

I. Em um laço while (contador++ < 5) { ... }, a condição de teste constitui uma expressão completa (full expression); portanto, há garantia de que o incremento de contador ocorre antes de o fluxo de execução prosseguir para o corpo do laço, mesmo utilizando a forma pós-fixada do operador.
II. Na instrução total = (a++ + b) + (a++ + c);, há garantia de que a primeira ocorrência de a++ é avaliada e seu efeito colateral aplicado antes da segunda ocorrência de a++, na ordem em que aparecem na expressão.
III. O ponto e vírgula que encerra uma instrução marca um ponto de sequência: todas as alterações produzidas por operadores de atribuição, incremento e decremento dentro daquela instrução devem ocorrer antes de o programa prosseguir para a instrução seguinte.
IV. No operador vírgula, como em expr1, expr2, há garantia de que a avaliação de expr1 — incluindo seus efeitos colaterais — ocorre antes da avaliação de expr2, pois o próprio operador vírgula constitui um ponto de sequência.

Quais estão corretas?
Alternativas