Die Größe von C ++ Variablen

C ++ können Sie auf Integer-Variablen-Typen zu erweitern, indem Sie die folgenden Beschreibungen auf der Vorderseite und fügte hinzu: const, ohne Vorzeichen, kurz, oder sonst lange. So könnten Sie so etwas wie die folgenden zu erklären:

unsigned long int ulnVariable-

EIN const Variable kann nicht verändert werden. Alle Zahlen sind implizit const. Somit ist 3 vom Typ const int, während 3.0 ist ein const double, und '3' ist ein const char.

Ein ohne Vorzeichen Variable kann auf nicht-negative Werte annehmen nur- es jedoch eine Anzahl in etwa doppelt so groß wie seine signierte Geschwister verarbeiten kann. somit ist eine unsigned int hat eine Reichweite von 0-4000000000 (im Gegensatz zu den regulären Gegensatz signedint'S-Bereich von -2 Mrd. auf 2 Mrd.).

C ++ ermöglicht es Ihnen, eine zu erklären short int und long int. Zum Beispiel kann ein short int nimmt weniger Platz, aber eine begrenzte Reichweite als ein normales hat int, während ein long int mehr Speicher braucht und hat eine deutlich größere Reichweite.

Das int wird angenommen. So sind die beiden folgenden Erklärungen werden beide Parteien akzeptiert und vollständig äquivalent:

long int lnVar1- // deklarieren eine lange intlong lnVar2- // auch eine lange int- int angenommen wird,

Die C ++ 2011 Standard definiert auch ein long long int und long double. Diese sind ebenso wie long int und doppelt, jeweils nur mehr so ​​- mehr Genauigkeit und größere Reichweite.

Nicht alle Kombinationen sind erlaubt. Beispielsweise, ohne Vorzeichen kann nur auf der Zählung Typen angewendet werden int und verkohlen. Die folgende Tabelle zeigt die rechtlichen Kombinationen und ihre Bedeutung, zusammen mit, wie eine Konstante dieses Typs zu erklären.

Die Common C ++ Variablentypen
ArtDeklarieren einer KonstanteWas es ist
int1Eine einfache Zählnummer, entweder positiv oder negativ.
unsigned int1UEine nicht negative Zählnummer.
short int---Eine potenziell kleinere Version des int. Er verbraucht weniger Speicher hat aber eine limitedrange.
long int1LEine potenziell größere Version des int. Es kann mehr Speicher verwenden, aber eine largerrange hat.
long long int1LL-Eine Version des int dass ispotentially sogar noch größer.
schweben1.0FEin einfacher Genauigkeit reelle Zahl.
doppelt1.0Ein doppelter Genauigkeit reelle Zahl.
long double---Ein potenziell größere Gleitkommazahl. Auf dem PC lange doppelt so hoch ist die native Größe für numbersinternal dem numerischen Prozessor.
verkohlen'C'Ein einzelner verkohlen Variable speichert asingle Charakter. Nicht geeignet für die Arithmetik.
wchar_tL'c 'Eine breite Charakter. Verwendet größere Zeichensätze Ideogramme solche asChinese zu speichern und japanischen Kanji-Symbole. Auch als UTF orUnicode bekannt.

Wie weit Zahlen Bereich?

Es mag seltsam erscheinen, aber die C ++ Standard sagen eigentlich nicht genau, wie groß eine Zahl jeder Art Daten aufnehmen kann. Die Standard-Adressen nur die relative Größe der einzelnen Variablentyp. Zum Beispiel heißt es, dass die maximale long int so groß wie die maximale mindestens int.

Die 2011-Standard sagt ein wenig mehr als das - zum Beispiel ein long int sein mindestens 32 Bits müssen - es gibt aber noch nicht die Größe eines jeden Variablentyp angeben.

Die Autoren von C ++ versuchten nicht, mysteriös zu sein. Sie wollten der 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 arbeiten mit verschiedenen Betriebssystemen.

In der Tat ist die Standardgröße eines int hat in den letzten Jahrzehnten stark verändert. Vor dem Jahr 2000 die Standard int auf den meisten PCs war 2 Bytes und hatte einen Bereich von plus oder minus 64.000. Irgendwann um 2000 änderte die Grundwortgröße auf den Intel-Prozessoren auf 32 Bit. Die meisten Compiler auf die Standardeinstellung geändert int von heute - es ist 4 Byte und einen Bereich von plus hat oder minus 2 Milliarden.

Die folgende Tabelle gibt die Größe und Umfang jeder Variablentyp auf den meisten anderen Compilern für einen Intel-Prozessor gemeint, die auf einem 32-Bit-Betriebssystem.

Bereich über numerische Datentypen
ArtGröße [Bytes]GenauigkeitAngebot
short int2genau-32.768 bis 32.767
int4genau-2147483648 bis 2147483647
long int4genau-2147483648 bis 2147483647
long long int8genau-9.223.372.036.854.775.808 to9,223,372,036,854,775,807
schweben47 Stellen+/ - 3,4028 * 10+/ -38
doppelt816 Stellen+/ - 1,7977 * 10+/ -308
long double1219 Stellen+/-1.1897 * 10+/ -4932

Der Versuch, eine Zahl zu berechnen, die außerhalb der Reichweite der den Typ einer Variablen ist, wird als ein bekannter Überlauf. Die C ++ Standard im Allgemeinen lässt die Ergebnisse einer Überlauf undefiniert. Das ist eine andere Art und Weise, dass die Erfinder von C ++ die Sprache flexibel, so dass der Maschinencode erzeugt verlassen wollte so schnell wie möglich sein würde.

Auf dem PC ein Gleitkommaüberlauf erzeugt eine Ausnahme, die, wenn sie nicht behandelt, wird Ihr Programm zum Absturz bringen. So schlecht, wie das klingt, ist ein Integer-Überlauf noch schlimmer - C ++ erzeugt ein falsches Ergebnis ohne Beanstandung.

Menü