Ciao a tutti, ho una domanda: come mai in questo codice (x è volutamente non inizializzata)

codice:
double get_precision()
{
    double ds = 1, d, x ;

    printf("%lf", x);     /// <<<<<<<<<<< QUI
    for ( ; x != 1; )
    {
        d = ds / 2.;
        x = 1 + d;
        ds = d;
    }
    return 2*d;
}
il compilatore ritorna giustamente un warning sulla x non inizializzata, mentre invece qui:

codice:
double get_precision()
{
    double ds = 1, d, x ;

    for ( ; x != 1; )
    {
        printf("%lf", x);
        d = ds / 2.;
        x = 1 + d;
        ds = d;
    }
    return 2*d;
}
non dice nulla, nonostante la prima volta che fa il ciclo x è non inizializzata????

Grazie