Re: Question C

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: guilde
Subject: Re: Question C
À propos du L (pour long) dans #define NDHEAP 1200000L,
Patrick Dupré a écrit :

> [...] cela n'a pas de sens dans la
> mesure ou le préprocesseur va remplacer chaque NDHEAPC
> par la valeur (ici 1200000L) et qu'il n'y a pas d'affectation mémoire
> Si A=NDHEAPC,
> c'est la déclaration de A qui fixe la taille.


Si tu écris par exemple A = NDHEAP * 42, alors le compilateur va :

- reconnaître que NDHEAP est une constante de type long ;
- reconnaître 42 comme une constante de type int ;
- promouvoir (cast implicite) 42 en long ;
- faire une multiplication de long ;
- caster le résultat au type de A ;
- stocker le résultat dans A.

Remarque que le type de A n'intervient qu'à la fin, juste avant le
stockage du résultat. S'il n'y avait pas le suffixe L dans la définition
de NDHEAP, tu aurais une multiplication de ints, ce qui dans certaines
circonstances peut donner un résultat différent qu'une multiplication de
long (si le int déborde et pas le long notamment).

À+,

Edgar.