Überprüfung des IEEE 754-Gleitkomma-Standards in C
Die Feststellung, ob ein C-Compiler den IEEE 754-Gleitkomma-Standard einhält, erfolgt normalerweise durch eine Compilerdefinition. Die für C verwendete Technik lässt sich jedoch möglicherweise nicht direkt auf C anwenden.
C-spezifischer Ansatz
Glücklicherweise bietet C eine einfache Methode, um diese Prüfung mithilfe der numerischen_Limits durchzuführen class:
std::numeric_limits::is_iec559;
Dieser Ausdruck wird als wahr ausgewertet, wenn IEEE 754 vom Compiler verwendet wird, andernfalls als falsch. Eine ähnliche Prüfung kann für den Float-Typ durchgeführt werden:
std::numeric_limits::is_iec559;
Alternative Method
Als Alternative zum numeric_limits-Ansatz können Sie den zweiten Teil von Adams Antwort für C anpassen:
#include
int main() {
// Check for IEEE 754 compliance by checking for a finite number of float exponents.
if (std::numeric_limits::max_exponent == std::numeric_limits::max()) {
// Compiler uses IEEE 754.
} else {
// Compiler does not use IEEE 754.
}
}
Dieser Ansatz basiert auf der Tatsache, dass IEEE 754 einen bestimmten Exponentenbereich für Gleitkommazahlen definiert. Wenn der maximale Exponent des Compilers mit der maximalen Größe einer Ganzzahl übereinstimmt, entspricht er wahrscheinlich IEEE 754.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3