yo++:
- crear una copia temporal de i
- incrementar i
- devolver la copia temporal
++i :
- incrementar i
- volver yo
Con las optimizaciones activadas, es muy posible que el ensamblaje resultante sea idéntico; sin embargo, ++i es más eficiente.
editar:tenga en cuenta que en C ++, puedo ser cualquier objeto que admita el operador prefijo y postfijo ++. Para objetos complejos, el costo de la copia temporal no es despreciable.
Buscaría en otra parte el potencial de optimización.
La eficiencia no debería ser su preocupación:es significado . Los dos son no lo mismo, a menos que sean independientes:uno opera antes del uso del valor, el otro post.
int i;i =1;cout <
int i;i =1;cout <<++i; //Devuelve 2
Cuando el significado no es importante, la mayoría de los compiladores traducirán tanto ++i como i++ (por ejemplo, en un bucle for) al mismo código de máquina/VM.