Alle Variablen Verwenden Sie den Datentyp während der Deklaration, um den Typ der zu speichernden Daten einzuschränken. Daher können wir sagen, dass Datentypen verwendet werden, um den Variablen mitzuteilen, welche Art von Daten sie speichern können. Immer wenn eine Variable in C++ definiert wird, weist der Compiler basierend auf dem Datentyp, mit dem sie deklariert wurde, etwas Speicher für diese Variable zu. Jeder Datentyp benötigt unterschiedlich viel Speicher.
C++ unterstützt eine Vielzahl von Datentypen und der Programmierer kann den Datentyp auswählen, der den Anforderungen der Anwendung entspricht. Datentypen geben die Größe und Art der zu speichernden Werte an. Allerdings unterscheiden sich die Speicherdarstellung und die Maschinenanweisungen zur Bearbeitung jedes Datentyps von Maschine zu Maschine, obwohl C++-Anweisungen auf allen Maschinen identisch sind.
C++ unterstützt die folgenden Datentypen:
- Primär oder Eingebaut oder Grundlegender Datentyp
- Abgeleitete Datentypen
- Benutzerdefinierte Datentypen
Datentypen in C++ werden hauptsächlich in drei Typen unterteilt:
1. Primitive Datentypen : Diese Datentypen sind integrierte oder vordefinierte Datentypen und können vom Benutzer direkt zum Deklarieren von Variablen verwendet werden. Beispiel: int, char, float, bool usw. In C++ verfügbare primitive Datentypen sind:
- Ganze Zahl
- Charakter
- Boolescher Wert
- Gleitkomma
- Doppelter Gleitkomma
- Wertlos oder nichtig
- Breiter Charakter
2. Abgeleitete Datentypen: Funktion
3. Abstrakte oder benutzerdefinierte Datentypen : Klasse
Primitive Datentypen
- Klasse
- Ganze Zahl : Das für ganzzahlige Datentypen verwendete Schlüsselwort lautet int . Ganzzahlen erfordern normalerweise 4 Byte Speicherplatz und reichen von -2147483648 bis 2147483647.
- Charakter : Der Zeichendatentyp wird zum Speichern von Zeichen verwendet. Das für den Zeichendatentyp verwendete Schlüsselwort lautet verkohlen . Zeichen benötigen normalerweise 1 Byte Speicherplatz und reichen von -128 bis 127 oder 0 bis 255.
- Boolescher Wert : Der boolesche Datentyp wird zum Speichern boolescher oder logischer Werte verwendet. Eine boolesche Variable kann beides speichern WAHR oder FALSCH . Das für den booleschen Datentyp verwendete Schlüsselwort lautet bool .
- Gleitkomma : Der Datentyp „Gleitkomma“ wird zum Speichern von Gleitkommawerten oder Dezimalwerten mit einfacher Genauigkeit verwendet. Das für den Gleitkomma-Datentyp verwendete Schlüsselwort lautet schweben . Float-Variablen benötigen normalerweise 4 Byte Speicherplatz.
- Doppelter Gleitkomma : Der Datentyp „Double Floating Point“ wird zum Speichern von Gleitkommawerten oder Dezimalwerten mit doppelter Genauigkeit verwendet. Das für den doppelten Gleitkomma-Datentyp verwendete Schlüsselwort lautet doppelt . Double-Variablen benötigen typischerweise 8 Byte Speicherplatz.
- Leere : Void bedeutet ohne Wert. Der Datentyp „void“ stellt eine wertlose Entität dar. Für Funktionen, die keinen Wert zurückgeben, wird ein void-Datentyp verwendet.
- Klasse
- Breiter Charakter : Breiter Charakter Der Datentyp ist ebenfalls ein Zeichendatentyp, aber dieser Datentyp ist größer als der normale 8-Bit-Datentyp. Vertreten durch wchar_t . Es ist im Allgemeinen 2 oder 4 Bytes lang.
- sizeof()-Operator: sizeof()-Operator wird verwendet, um die Anzahl der Bytes zu ermitteln, die von einer Variablen/einem Datentyp im Computerspeicher belegt werden.
Beispiel:
int m , x[50];
cout<
cout<
Die Größe der Variablen kann je nach Compiler und Computer, die Sie verwenden, von den in der obigen Tabelle gezeigten abweichen.
C++
// C++ Program to Demonstrate the correct size> // of various data types on your computer.> #include> using> namespace> std;> int> main()> {> > cout <<> 'Size of char : '> <<> sizeof> (> char> ) << endl;> > cout <<> 'Size of int : '> <<> sizeof> (> int> ) << endl;> > cout <<> 'Size of long : '> <<> sizeof> (> long> ) << endl;> > cout <<> 'Size of float : '> <<> sizeof> (> float> ) << endl;> > cout <<> 'Size of double : '> <<> sizeof> (> double> ) << endl;> > return> 0;> }> |
>
>Ausgabe
Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8>
Zeitkomplexität: O(1)
Raumkomplexität: O(1)
Datentypmodifikatoren
Wie der Name schon sagt, werden Datentypmodifikatoren mit integrierten Datentypen verwendet, um die Länge der Daten zu ändern, die ein bestimmter Datentyp enthalten kann.
In C++ verfügbare Datentypmodifikatoren sind:
- Unterzeichnet
- Ohne Vorzeichen
- Kurz
- Lang
Die folgende Tabelle fasst die geänderte Größe und den geänderten Bereich der integrierten Datentypen in Kombination mit den Typmodifikatoren zusammen:
Datentyp | Größe (in Bytes) | Reichweite |
---|---|---|
kurze Int | 2 | -32.768 bis 32.767 |
unsigned short int | 2 | 0 bis 65.535 |
unsigned int | 4 | 0 bis 4.294.967.295 |
int | 4 | -2.147.483.648 bis 2.147.483.647 Java-Zeichenfolge anhängen |
lange int | 4 | -2.147.483.648 bis 2.147.483.647 |
unsigned long int | 4 | 0 bis 4.294.967.295 |
lang lang int | 8 | -(2^63) bis (2^63)-1 |
unsigned long long int | 8 | 0 bis 18.446.744.073.709.551.615 |
signiert char | 1 | -128 bis 127 |
unsigniertes Zeichen | 1 | 0 bis 255 |
schweben | 4 | -3,4×10^38 bis 3,4×10^38 |
doppelt | 8 | -1,7×10^308 bis 1,7×10^308 |
langes Doppel | 12 | -1,1×10^4932 bis 1,1×10^4932 |
wchar_t | 2 oder 4 | 1 breites Zeichen |
Notiz : Die oben genannten Werte können von Compiler zu Compiler variieren. Im obigen Beispiel haben wir GCC 32 Bit betrachtet.
Wir können die Größe aller Datentypen anzeigen, indem wir den Operator sizeof() verwenden und das Schlüsselwort des Datentyps als Argument an diese Funktion übergeben, wie unten gezeigt:
Um nun den Bereich der Datentypen zu erfahren, sehen Sie sich die folgende Tabelle an
Hinweis: Syntax Die Header-Datei wird definiert, um den Bereich grundlegender Datentypen zu ermitteln. Modifikatoren ohne Vorzeichen haben einen Mindestwert von Null. Daher sind für den vorzeichenlosen Mindestwert keine Makrokonstanten definiert.
Makrokonstanten
Name | Drückt aus |
---|---|
CHAR_MIN | Der Mindestwert für ein Objekt vom Typ char |
CHAR_MAX | Maximalwert für ein Objekt vom Typ char |
SCHAR_MIN | Der Mindestwert für ein Objekt vom Typ Signed char |
SCHAR_MAX | Maximalwert für ein Objekt vom Typ Signed char |
FLUG_MAX | Maximalwert für ein Objekt vom Typ Unsigned char |
CHAR_BIT | Anzahl der Bits in einem char-Objekt |
MB_LEN_MAX | Maximale Anzahl von Bytes in einem Multibyte-Zeichen |
SHRT_MIN | Der Mindestwert für ein Objekt vom Typ short int |
SHRT_MAX | Maximalwert für ein Objekt vom Typ short int |
USHRT_MAX | Maximalwert für ein Objekt vom Typ Unsigned short int |
INT_MIN | Der Mindestwert für ein Objekt vom Typ int |
INT_MAX | Maximalwert für ein Objekt vom Typ int |
UINT_MAX | Maximalwert für ein Objekt vom Typ Unsigned int |
LONG_MIN | Der Mindestwert für ein Objekt vom Typ long int |
LONG_MAX | Maximalwert für ein Objekt vom Typ long int |
HEAD_MAX | Maximalwert für ein Objekt vom Typ Unsigned long int |
SHIP_MIN | Der Mindestwert für ein Objekt vom Typ long long int |
LLONG_MAX | Maximalwert für ein Objekt vom Typ long long int |
ULLONG_MAX | Maximalwert für ein Objekt vom Typ Unsigned long long int |
Der tatsächliche Wert hängt von der jeweiligen System- und Bibliotheksimplementierung ab, muss jedoch die Grenzen dieser Typen auf der Zielplattform widerspiegeln. LLONG_MIN, LLONG_MAX und ULLONG_MAX sind für Bibliotheken definiert, die dem C-Standard von 1999 oder höher entsprechen (der seit 2011 nur noch den C++-Standard umfasst: C++11).
C++-Programm zum Ermitteln des Bereichs von Datentypen mithilfe von Makrokonstanten
Beispiel:
C++
// C++ program to Demonstrate the sizes of data types> #include> #include> using> namespace> std;> int> main()> {> > cout <<> 'Size of char : '> <<> sizeof> (> char> ) <<> ' byte'> > << endl;> > cout <<> 'char minimum value: '> << CHAR_MIN << endl;> > cout <<> 'char maximum value: '> << CHAR_MAX << endl;> > cout <<> 'Size of int : '> <<> sizeof> (> int> ) <<> ' bytes'> > << endl;> > cout <<> 'Size of short int : '> <<> sizeof> (> short> int> )> > <<> ' bytes'> << endl;> > cout <<> 'Size of long int : '> <<> sizeof> (> long> int> )> > <<> ' bytes'> << endl;> > cout <<> 'Size of signed long int : '> > <<> sizeof> (> signed> long> int> ) <<> ' bytes'> << endl;> > cout <<> 'Size of unsigned long int : '> > <<> sizeof> (unsigned> long> int> ) <<> ' bytes'> << endl;> > cout <<> 'Size of float : '> <<> sizeof> (> float> ) <<> ' bytes'> > << endl;> > cout <<> 'Size of double : '> <<> sizeof> (> double> )> > <<> ' bytes'> << endl;> > cout <<> 'Size of wchar_t : '> <<> sizeof> (> wchar_t> )> > <<> ' bytes'> << endl;> > return> 0;> }> |
>
>Ausgabe
Size of char : 1 byte char minimum value: -128 char maximum value: 127 Size of int : 4 bytes Size of short int : 2 bytes Size of long int : 8 bytes Size of signed long int : 8 bytes Size of unsigned long int : 8 bytes Size of float : 4 bytes Size of double : 8 bytes Size of wchar_t : 4 bytes>
Zeitkomplexität: O(1)
Raumkomplexität: O(1)
C++
#include> #include> using> namespace> std;> int> main() {> > // Integer data types> > int> a = 10;> > short> b = 20;> > long> c = 30;> > long> long> d = 40;> > cout <<> 'Integer data types: '> << endl;> > cout <<> 'int: '> << a << endl;> > cout <<> 'short: '> << b << endl;> > cout <<> 'long: '> << c << endl;> > cout <<> 'long long: '> << d << endl;> > > // Floating-point data types> > float> e = 3.14f;> > double> f = 3.141592;> > long> double> g = 3.14159265358979L;> > cout <<> 'Floating-point data types: '> << endl;> > cout <<> 'float: '> << e << endl;> > cout <<> 'double: '> << f << endl;> > cout <<> 'long double: '> << g << endl;> > > // Character data types> > char> h => 'a'> ;> > wchar_t> i = L> 'b'> ;> > char16_t j = u> 'c'> ;> > char32_t k = U> 'd'> ;> > cout <<> 'Character data types: '> << endl;> > cout <<> 'char: '> << h << endl;> > wcout <<> 'wchar_t: '> << i << endl;> > cout <<> 'char16_t: '> << j << endl;> > cout <<> 'char32_t: '> << k << endl;> > > // Boolean data type> > bool> l => true> ;> > bool> m => false> ;> > cout <<> 'Boolean data type: '> << endl;> > cout <<> 'true: '> << l << endl;> > cout <<> 'false: '> << m << endl;> > > // String data type> > string n => 'Hello, world!'> ;> > cout <<> 'String data type: '> << endl;> > cout << n << endl;> > > return> 0;> }> |
>
>Ausgabe
Integer data types: int: 10 short: 20 long: 30 long long: 40 Floating-point data types: float: 3.14 double: 3.14159 long double: 3.14159 Character data types: char: a wchar_t: b char16_t: 99 char32_t: 100 Boolean data type: true: 1 false: 0 String data type: Hello, world!>
Dieses Programm deklariert Variablen verschiedener Datentypen, weist ihnen Werte zu und gibt ihre Werte dann aus.
Zu den ganzzahligen Datentypen gehören int, short, long und long long. Diese Datentypen stellen ganze Zahlen unterschiedlicher Größe dar.
Zu den Gleitkomma-Datentypen gehören Float, Double und Long Double. Diese Datentypen stellen reelle Zahlen mit unterschiedlichem Genauigkeitsgrad dar.
Zu den Zeichendatentypen gehören char, wchar_t, char16_t und char32_t. Diese Datentypen repräsentieren einzelne Zeichen unterschiedlicher Größe.
Der boolesche Datentyp ist ein einfacher Datentyp, der nur einen von zwei Werten haben kann: wahr oder falsch.
Der String-Datentyp ist eine Folge von Zeichen. In diesem Programm verwenden wir die String-Klasse, um eine String-Variable zu deklarieren und ihr einen Wert zuzuweisen.
Vorteile :
Datentypen bieten eine Möglichkeit, Daten in einem Programm zu kategorisieren und zu organisieren und so das Verständnis und die Verwaltung zu erleichtern.
Jeder Datentyp verfügt über einen bestimmten Wertebereich, der gespeichert werden kann, was eine genauere Kontrolle über die Art der gespeicherten Daten ermöglicht.
Datentypen tragen dazu bei, Fehler und Bugs in einem Programm zu verhindern, indem sie strenge Regeln für die Verwendung und Manipulation von Daten durchsetzen.
C++ bietet eine große Auswahl an Datentypen, sodass Entwickler den besten Typ für eine bestimmte Aufgabe auswählen können.
Nachteile :
Die Verwendung des falschen Datentyps kann zu unerwartetem Verhalten und Fehlern in einem Programm führen.
Einige Datentypen, wie z. B. Long Doubles oder Char-Arrays, können bei übermäßiger Verwendung viel Speicher beanspruchen und die Leistung beeinträchtigen.
Das komplexe Typsystem von C++ kann es für Anfänger schwierig machen, die Sprache effektiv zu erlernen und zu verwenden.
Die Verwendung von Datentypen kann die Komplexität und Ausführlichkeit eines Programms erhöhen und das Lesen und Verstehen erschweren.