kann jemand sagen ob es eine Funktion gibt die zum Beispiel überprüft ob das in einer float(int, double...)-variable gespeicherte Ergebnis einer Additon oder wie auch immer, die Richtigkeit aufgrund der Stellenanzahl der Operanden verloren hat. spricht ob ein Überlauf stattgefunden hat?! oder wie kann man so etwas abfangen...? Danke schon mal# .....
Einen Integerüberlauf kann man portabel nur durch entsprechende Tests auf die Schliche kommen, bevor man die Rechenoperation durchführt. Nicht protabel ist folgende VC Spezifische Lösung:
C++:
int x = 0x7fffffff; // +1 Sollte Überlauf bringen int y; ... try { y = x+1; // Sollte überlauf produzieren __asm into; // Testet überlauf } catch(...) { Fängt überlauf ab }
Bei fließkommazahlen kann man nach einer Rechenoperation gegen std::numeric_limits<float>::infinity testen- -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)
bei floats gibt es imho eigentlich keinen direkten überlauf sondern es wurde eine bestimmte bytekombination für unendlich und -unendlich und was weiss ich reserviert... du musst dich also um nix weiter kümmern sondern nur testen ob da nach der mutlipliaktion unendlich drin steht und wenn nicht kannst du weitermachen... -- ...fleißig wie zwei Weißbrote