2014-08-29 1 views
0

Y a-t-il une différence entre ces deux déclarations?Comment "i ++" est plus efficace que "i = i + 1"?

i++; 
i = i + 1; 
+2

Votre titre ne correspond pas à votre question. – Mysticial

+0

++ i est la plus efficace, i ++ renvoie une copie de i avant d'incrémenter la variable. Were ++ i incrémente la variable et évite la copie. –

Répondre

6

Dépend de l'optimisation. i++ peut, sur la plupart des processeurs, être représenté comme une seule instruction de langage machine. i = i + 1, d'autre part, pourrait être représenté par jusqu'à quatre: charge i, charge 1, ajouter, stocker à i; Cependant, même un compilateur intelligent moyen devrait être capable de reconnaître qu'il peut le réécrire dans le premier.

0

non, il n'y a pas de différence. Le compilateur les compilera dans le même assemblage

+0

voir la réponse d'amadan – nobalG

+1

Oui, la réponse d'Amadan est plus complète et correcte. J'ai supposé que le code a été compilé avec l'optimisation activée. – Stephen

+1

@DividebyZero: Eh bien, pour être honnête, aujourd'hui, à l'âge de LLVM et d'autres choses, il n'y a pas de différence, je crois. C'est juste que je ne suppose pas automatiquement C = C moderne :) (J'ai quelques connaissances qui travaillent encore sur Sun Boxen de 25 ans) – Amadan

Questions connexes