Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Evaluation d'une expression constante

31 réponses
Avatar
candide
Bonjour,

La norme dit :

6.6 Constant expressions
(...)
A constant expression can be evaluated during translation rather than
runtime,


Soit le programme suivant :

/*--------------------------------*/
#include <stdio.h>

#define A 2
#define B 5

int main(void)
{
int i;

for (i = 0; i < A * B; i++)
printf("toto\n");

return 0;
}
/*--------------------------------*/

Ai-je une quelconque garantie que l'expression A*B ne sera pas réévaluée
à chaque tour de boucle pendant l'exécution ?

Merci

1 réponse

1 2 3 4
Avatar
Vincent Lefevre
Dans l'article <ggr5du$2bu3$,
Marc Espie écrit:

Il me semble justement qu'il y a un bout de paragraphe tout au debut de
la norme qui fixe ces limites (longueur maximale d'expression, niveau
de parentheses etc). J'aurais un peu tendance a penser que tu pipotes.



Au lieu de dire que je pipote, tu ferais mieux de lire ce que dit
exactement la norme:

The implementation shall be able to translate and execute at least
one program that contains at least one instance of every one of the
following limits:

"at least one", cela ne signifie pas tous les programmes.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
1 2 3 4