Bereich über numerische Datentypen in C ++
Es mag seltsam erscheinen, aber die C ++ Standard nicht genau sagen, wie groß eine Zahl jeder der Datentypen aufnehmen kann. Der Standard spricht nur auf die relative Größe jedes Datentyp. Zum Beispiel heißt es, dass die maximale long int so groß wie die maximale mindestens Int.
Die Autoren von C ++ versuchten nicht, mysteriös zu sein. Sie wollten lediglich den Compiler zu ermöglichen, die absolut schnellste Code möglich, dass die Basismaschine zu implementieren. Der Standard wurde entwickelt, für alle verschiedenen Arten von Prozessoren mit unterschiedlichen Betriebssystemen zu arbeiten.
Es ist jedoch sinnvoll, die Grenzen für die jeweilige Umsetzung kennen. Die Tabelle zeigt die Größe der einzelnen Nummerntyp auf einem Windows-PC den Code :: Blocks / gcc-Compiler.
Variable | Größe (Byte) | Genauigkeit | Angebot |
---|---|---|---|
kurz | 2 | genau | -32.768-32.767 |
int | 4 | genau | 2147483648 bis 2147483647 |
lange | 4 | genau | -2147483648 bis 2147483647 |
long long int | 8 | genau | -9.223.372.036.854.775.808 zu 9.223.372.036.854.775.807 |
schweben | 4 | 7 Stellen | ± 3.4028 x 10 ±38 |
lange | 8 | 16 Stellen | ± 1.7977 x 10 ±308 |
long double | 12 | 19 Stellen | ± 1.1897 x 10 ±4932 |
Der Versuch, eine Zahl zu berechnen, die über den Bereich seiner Art ist als ein bekannter Überlauf. Die C ++ Standard lässt im Allgemeinen die Ergebnisse eines Überlauf als undefiniert. Das ist eine andere Art und Weise, dass die definers von C ++ flexibel geblieben.
Auf dem PC ein Gleitkommaüberlauf führt zu einer Ausnahme, die, wenn nicht behandelt wird Ihr Programm zum Absturz bringen. So schlecht, wie das klingt, ist ein Integer-Überlauf schlimmer - C ++ erzeugt leise einen falschen Wert ohne Beanstandung.