(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> )
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("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/>