
paulo1205
(usa Ubuntu)
Enviado em 26/04/2018 - 00:38h
Isso é básico da sintaxe do C: operador pós-fixado de incremento. O sentido de fazer “
var++“ é equivalente ao seguinte:.
(temp=var, var=var+1, temp) /* “temp” é uma variável fictícia com o mesmo tipo de “var”. */
/* Em Português: guarda o valor atual de “var”, incrementa “var”, e devolve à expressão o valor que fora guardado. */
/* Note que os parênteses neste exemplo não indicam chamada de função, mas sim o agrupoamento de
três expressões separadas pelo operador de sequenciamento (“,”). */
No seu caso, em vez de uma variável comum, você usa um elemento de
array (cujo valor é variável): o valor do elemento referenciado é guardado, tal elemento é incrementado, e o valor guardado é devolvido à expressão.
No seu caso, você despreza o valor retornado (i.e. não o atribui a outra variável nem o usa como parte de uma expressão maior, o que é perfeitamente aceitável em C), de modo que o único efeito que você vai perceber é que o elemento do vetor é incrementado.
Existe outra versão do operador de incremento, que é quando ele é colocado como prefixo (e.g. “
++var”). Nesse caso, a variável é incrementada antes de se pegar qualquer valor, e seu novo valor é devolvido à expressão. Seria um comportamento equivalente ao seguinte código.
(var=var+1, var)