É verdade que i++
e ++i
são operações diferentes. Eles têm o mesmo efeito colateral (modificando o valor armazenado de i
), mas produzem valores diferentes e como resposta de Karl Bielefeldt indica que uma implementação não otimizada de i++
pode ter que armazenar o valor anterior de i
em um temporário.
Mas se você os estiver usando em um contexto onde o resultado não é usado, não deve haver diferença alguma.
Por exemplo, em um loop de estilo C, a terceira expressão no cabeçalho do loop é avaliada apenas por seus efeitos colaterais; qualquer valor que ele produz é discretamente descartado. Esses dois loops:
for (i = 0; i < COUNT; i ++) {
// ...
}
for (i = 0; i < COUNT; ++ i) {
// ...
}
tem semântica idêntica, e se o seu compilador não gerar código idêntico, ou pelo menos equivalente, você provavelmente encontrará um compilador melhor.
Portanto, neste contexto, a escolha entre i ++
e ++ i
deve ser puramente de estilo. Se você tem um padrão de codificação, siga-o. Se você não fizer isso, apenas seja consistente.
Se você estiver usando i ++
ou ++ i
em um contexto em que o resultado é usado, o desempenho não será um fator; use o que lhe der a resposta que você precisa. Ou considere se seu código pode ser mais limpo se você reorganizá-lo para não usar o resultado de i ++
ou ++ i
.