Warum können die Gleitkommatypen nicht mit der Funktion memcmp () verglichen werden?

bool floatcmp(const float a, const float b)
{
    const void *p = (void*)&a;
    const void *q = (void*)&b;
    if (memcmp(p, q, sizeof(float)) == 0)
        return true;
    return false;
}

Der Beispielcode ist oben, die Manpage sagtmemcmp(x,y)==0 bedeutet nicht, dassx==y - und Gleitkommatypen haben häufig einen Wert namens NaN ("keine Zahl") mit der Eigenschaft "NaN == NaN ist falsch". Aber ich ändere den Typ auf void * und ich denke, der Compiler weiß nichta ist eine Gleitkommazahl.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage