Ich bin nicht sicher, wie mit Gleitkommaausnahmen in C oder C++ umzugehen ist. Von dem Wiki, folgen dort Arten von Punkt Ausnahmen floating:Umgang mit Gleitkommaausnahmen
IEEE 754 specifies five arithmetic errors that are to be recorded in "sticky bits" (by default; note that trapping and other alternatives are optional and, if provided, non-default). * inexact, set if the rounded (and returned) value is different from the mathematically exact result of the operation. * underflow, set if the rounded value is tiny (as specified in IEEE 754) and inexact (or maybe limited to if it has denormalisation loss, as per the 1984 version of IEEE 754), returning a subnormal value (including the zeroes). * overflow, set if the absolute value of the rounded value is too large to be represented (an infinity or maximal finite value is returned, depending on which rounding is used). * divide-by-zero, set if the result is infinite given finite operands (returning an infinity, either +∞ or −∞). * invalid, set if a real-valued result cannot be returned (like for sqrt(−1), or 0/0), returning a quiet NaN.
Ist es, dass, wenn irgendeine Art von oben Ausnahmen geschieht, wird das Programm nicht normal beenden? Oder das Programm wird diesen Fehler auftragen, ohne etwas zu erwähnen, und macht daher den Fehler schwer zu debuggen?
Kann ein Compiler wie gcc eine Warnung für einen offensichtlichen Fall geben?
Was kann ich während der Codierung meines Programms tun, um zu benachrichtigen, wo der Fehler auftritt und welche Typen es ist, wenn es passiert, so dass ich den Fehler leicht in meinem Code finden kann? Bitte geben Sie Lösungen in C und C++ Fall.
Danke und Gruß!
Antworten werden wahrscheinlich spezifisch für ein Betriebssystem sein. Hast du einen Gedanken? –
Sowohl Linux als auch Windows, obwohl ich jetzt häufiger Linux benutze. – Tim
Ich sehe nicht, wie ISO/IEEE-definierte Fließkomma-Semantik OS-abhängig sein wird. – Jeff