• [^] # Re: 6*9

    Posté par . En réponse au journal Google, encore et toujours. Évalué à 4.

    Amusant :-)

    Pour ceux qui se demanderaient le pourquoi du comment, voici ce qui se passe dans ce programme :

    D'abord, le préprocesseur remplace la ligne #include par le contenu du fichier stdio.h, il fait de même avec les #define (il remplace l'alias par sa valeur, soit 1+5, sans faire aucune interprétation/calcul)

    Ensuite, le compilateur doit transformer le source en opcodes, et il tombe sur :

    printf( "What you get if you multiply six by nine: %d\n", SIX * NINE );


    transformé par le préprocesseur en :

    printf( "What you get if you multiply six by nine: %d\n", 1+5 * 8+1);


    Les règles de priorité des opérateurs favorisant la multiplication au détriment de l'addition, cela revient à 1+(5*8)+1, soit 40+2.