• [^] # Re: shell touch

    Posté par . En réponse au journal La sortie de `ls` vient de changer. Évalué à 2.

    Par curiosité, continuons :

    % cpp < fichier | indent
    #1 "<stdin>"
    #1 "<built-in>"
    #1 "<command-line>"
    #1 "/usr/include/stdc-predef.h" 1 3 4
    #1 "<command-line>" 2
    #1 "<stdin>"
    int F = 00, OO = 00;
    main ()
    {
     F_OO ();
     printf ("%1.3f\n", 4. * -F / OO / OO);
    } F_OO ()
    {
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
     - -F < 00 || --F - OO--;
    }

    Les types et les déclarations manquent, mais passons.

    Dans le premier -F < 00 || --F - OO--;, F vaut 0, donc la condition est fausse et la seconde partie s’exécute, donnant F == -1 et OO == -1.
    Dans les - -F < 00 || --F - OO--; suivants, le premier test est vrai, donc aucune opération n'est faite.
    -F < 00 || --F - OO--; revient, la condition est encore fausse, donc F == -2 et OO == -2 aussi.
    Tout le reste est répété 16 fois, donnant F == -16 et OO == -16.
    La fonction main poursuit donc, 4. * -F / OO / OO ce qui donne 4*--16/-16/-16, ce qui donne 0.25.