• [^] # Nan...

    Posté par . En réponse au message Marquer un double comme étant non élaboré.. Évalué à 1.

    Et comment affecte-t-on les bits d'un double ?

    avec un "union" ?

    L'exemple de 'nan.h' n'est pas encouragant.


    # define NAN (__builtin_nanf(""))

    #elif defined__GNUC__

    # define NAN \
    (__extension__ \
    ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) \
    { __l: 0x7fc00000UL }).__d)

    #else

    # include <endian.h>

    # if __BYTE_ORDER == __BIG_ENDIAN
    # define __nan_bytes { 0x7f, 0xc0, 0, 0 }
    # endif
    # if __BYTE_ORDER == __LITTLE_ENDIAN
    # define __nan_bytes { 0, 0, 0xc0, 0x7f }
    # endif

    static union { unsigned char __c[4]; float __d; } __nan_union
    __attribute_used__ = { __nan_bytes };
    # define NAN (__nan_union.__d)

    #endif