2009-11-05 5 views

Répondre

5

Depuis 72 & 184 est une expression constante , votre compilateur est susceptible de évaluer la réponse au moment de la compilation, au lieu de générer du code pour calculer le même résultat à l'exécution.

La réponse se trouve être 8, de sorte que la déclaration serait la même chose que:

printf("result %d ", 8); 

Dans ce cas, le compilateur est susceptible de générer ce qu'on appelle une immédiate poussée sur la pile d'arguments, où la la valeur 8 est intégrée directement dans les instructions de la machine. Cela peut être différent de pousser une valeur plus grande telle que 12345678, où elle peut être trop grande pour une poussée immédiate et ensuite avoir besoin d'être stockée dans la mémoire du programme. Ce qui précède dépend entièrement de l'architecture de la CPU pour laquelle vous compilez votre programme, ainsi que des capacités et des paramètres d'optimisation de votre compilateur.

2

Cela peut dépendre du compilateur que vous utilisez. Avec les optimisations, le compilateur peut replier cette instruction en une seule valeur. Cette valeur résiderait dans la mémoire avec le reste de votre code, mais pendant l'exécution de cette ligne, elle se trouverait dans un registre cpu.

Je ne sais pas si un compilateur d'optimiser la %d avec la valeur réelle si :)