3 votes

Le produit de deux constantes est-il calculé à chaque fois qu'il est exécuté ?

Par exemple, si j'ai :

if(x < 2\*0.025) { ... }

Est-ce que le 2*0.025 être calculée à chaque fois ? Ou est-ce qu'un 0.05 pour que l'opération de multiplication ne soit pas exécutée à chaque fois ?

En d'autres termes, est-il plus efficace d'utiliser 0.05 au lieu de 2*0.025 ?

5voto

dasblinkenlight Points 264350

Tous les compilateurs que je connais implémentent pliage constant c'est-à-dire qu'il calcule les expressions constantes au moment de la compilation, il n'y a donc aucune différence. Cependant, la norme ne l'impose pas :

Une expression constante peut être évaluée pendant la traduction plutôt qu'au moment de l'exécution, et peut donc être utilisée à tout endroit où une constante peut l'être.

Vous pouvez désactiver explicitement cette optimisation avec certains compilateurs. Par exemple, -frounding-math désactive le pliage des constantes pour les expressions en virgule flottante dans gcc.

0voto

LaC Points 7191

Les expressions constantes sont précalculées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X