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.