(Courriels de diversion: <entamerais@localiserons-avoisinerai.com> <meteorites@contrerez-demarquez.com> <rajeuniront@surmenais-portail.com> <barbet@charriee-balisera.com> <humilier@saussaies-urbaniserez.com> <creche@intimions-liquidais.com> <encriers@peseras-vertebrales.com> <etraves@desengageons-figure.com> <happions@angoisserions-ensoleilles.com> <concretement@veilliez-reimplanta.com> )


Laurent Laborde a écrit :
voila :

#define trois deux++

int un = 1;
int deux = un++;
int quatre = trois + un;
int six = trois * deux;
int cinq = six - un;

Quelles sont les valeurs respectives de :
un
deux
trois
quatre
cinq
six


La seule difficulté est de bien copmprendre comment fonctionne un++ et deux++ . Ci-dessous le (tout petit) programme C correspondant.


/ Programme "ker2x"

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define trois deux++

/*
    Corps du programme
*/
int main(int argc, char **argv) {

    int un = 1;
    int deux = un++;
    int quatre = trois + un;
    int six = trois * deux;
    int cinq = six - un;

/*
 * Principe à retenir deux++ signifie deux pendant la commande et
 * augmente deux de 1 seulement à la fin de celle-ci.
 * un = 1;              ne pose pas de problème
 * deux = un++;         deux = 1 et un = 2 (à la fin de la commande)
 * quatre = trois + un; quatre = deux + un =1+2=3 , et deux =1+1=2
 * six = trois * deux;  six = 2 * 2 = 4  et deux = 2 + 1 = 3
 * cinq = six - un;     cinq = 4 - 2 = 2
 *
 * Finalement c'est assez simple si on applique bien les règles.
 * Certaines écritures avec les pointeurs sont autrement plus tordues
 */

printf("\nun = %d\n",un); // = 1
printf("deux = %d\n",deux); // = 3 (en fin de programme)
printf("quatre = %d\n",quatre); // = 3
printf("cinq = %d\n",cinq); // = 2



printf("six = %d\n\n",six); // = 4 /* Fin du programme */ return (0); } // fin de main()


-------------------------------------------------------------------- Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>