Alle variabelen gebruik het gegevenstype tijdens de aangifte om het type gegevens dat moet worden opgeslagen te beperken. Daarom kunnen we zeggen dat gegevenstypen worden gebruikt om de variabelen te vertellen welk type gegevens ze kunnen opslaan. Telkens wanneer een variabele in C++ wordt gedefinieerd, wijst de compiler wat geheugen toe aan die variabele op basis van het gegevenstype waarmee deze is gedeclareerd. Elk gegevenstype vereist een andere hoeveelheid geheugen.
C++ ondersteunt een grote verscheidenheid aan gegevenstypen en de programmeur kan het gegevenstype selecteren dat geschikt is voor de behoeften van de toepassing. Gegevenstypen specificeren de grootte en typen waarden die moeten worden opgeslagen. De opslagrepresentatie en machine-instructies voor het manipuleren van elk gegevenstype verschillen echter van machine tot machine, hoewel C++-instructies op alle machines identiek zijn.
C++ ondersteunt de volgende gegevenstypen:
- Primair of Ingebouwd of Fundamenteel gegevenstype
- Afgeleide gegevenstypen
- Door de gebruiker gedefinieerde gegevenstypen

Gegevenstypen in C++ zijn hoofdzakelijk onderverdeeld in 3 typen:
1. Primitieve gegevenstypen : Deze gegevenstypen zijn ingebouwde of vooraf gedefinieerde gegevenstypen en kunnen rechtstreeks door de gebruiker worden gebruikt om variabelen te declareren. voorbeeld: int, char, float, bool, etc. Primitieve gegevenstypen die beschikbaar zijn in C++ zijn:
- Geheel getal
- Karakter
- Booleaans
- Drijvend punt
- Dubbele drijvende komma
- Waardeloos of ongeldig
- Breed karakter
2. Afgeleide gegevenstypen: Functie
3. Abstracte of door de gebruiker gedefinieerde gegevenstypen : Klas
Primitieve gegevenstypen
- Klas
- Geheel getal : Het trefwoord dat wordt gebruikt voor gegevenstypen met gehele getallen is int . Gehele getallen vereisen doorgaans 4 bytes geheugenruimte en variëren van -2147483648 tot 2147483647.
- Karakter : Tekengegevenstype wordt gebruikt voor het opslaan van tekens. Het trefwoord dat wordt gebruikt voor het tekengegevenstype is verkoold . Tekens vereisen doorgaans 1 byte geheugenruimte en variëren van -128 tot 127 of 0 tot 255.
- Booleaans : Booleaans gegevenstype wordt gebruikt voor het opslaan van Booleaanse of logische waarden. Een Booleaanse variabele kan beide opslaan WAAR of vals . Het sleutelwoord dat wordt gebruikt voor het Booleaanse gegevenstype is bool .
- Drijvend punt : Het gegevenstype Drijvende komma wordt gebruikt voor het opslaan van drijvende-kommawaarden of decimale waarden met enkele precisie. Het trefwoord dat wordt gebruikt voor het gegevenstype met drijvende komma is vlot . Float-variabelen vereisen doorgaans 4 bytes geheugenruimte.
- Dubbele drijvende komma : Het gegevenstype Double Floating Point wordt gebruikt voor het opslaan van drijvende-kommawaarden of decimale waarden met dubbele precisie. Het trefwoord dat wordt gebruikt voor het gegevenstype met dubbele drijvende komma is dubbele . Dubbele variabelen vereisen doorgaans 8 bytes geheugenruimte.
- leegte : Ongeldig betekent zonder enige waarde. Het void-gegevenstype vertegenwoordigt een waardeloze entiteit. Voor functies die geen waarde retourneren, wordt een ongeldig gegevenstype gebruikt.
- Klas
- Breed karakter : Breed karakter gegevenstype is ook een tekengegevenstype, maar dit gegevenstype heeft een grotere omvang dan het normale 8-bits gegevenstype. Vertegenwoordigd door wchar_t . Het is over het algemeen 2 of 4 bytes lang.
- sizeof()-operator: sizeof()-operator wordt gebruikt om het aantal bytes te vinden dat wordt ingenomen door een variabele/gegevenstype in het computergeheugen.
Voorbeeld:
int m, x[50];
uit<
uit<
De grootte van variabelen kan afwijken van de grootte die in de bovenstaande tabel wordt weergegeven, afhankelijk van de compiler en de computer die u gebruikt.
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;> }> |
>
>Uitvoer
Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8>
Tijdcomplexiteit: O(1)
Ruimtecomplexiteit: O(1)
Gegevenstypemodificatoren
Zoals de naam al doet vermoeden, worden datatype-modifiers gebruikt met ingebouwde datatypen om de lengte van de gegevens die een bepaald datatype kan bevatten, te wijzigen.

Modifiers voor gegevenstypes die beschikbaar zijn in C++ zijn:
- Ondertekend
- Niet ondertekend
- Kort
- Lang
De onderstaande tabel geeft een overzicht van de gewijzigde grootte en het bereik van ingebouwde datatypes in combinatie met de typemodifiers:
| Data type | Grootte (in bytes) | Bereik |
|---|---|---|
| korte int | 2 | -32.768 tot 32.767 |
| niet-ondertekende korte int | 2 | 0 tot 65.535 |
| niet ondertekend int | 4 | 0 tot 4.294.967.295 |
| int | 4 | -2.147.483.648 tot 2.147.483.647 waarom string onveranderlijk in Java |
| lang int | 4 | -2.147.483.648 tot 2.147.483.647 |
| niet-ondertekend lange int | 4 | 0 tot 4.294.967.295 |
| lang lang int | 8 | -(2^63) tot (2^63)-1 |
| niet-ondertekend lang lang int | 8 | 0 tot 18.446.744.073.709.551.615 |
| ondertekende char | 1 | -128 tot 127 |
| Ongetekend char | 1 | 0 tot 255 |
| vlot | 4 | -3,4×10^38 tot 3,4×10^38 |
| dubbele | 8 | -1,7×10^308 tot 1,7×10^308 |
| lange dubbele | 12 | -1,1×10^4932 tot 1,1×10^4932 |
| wchar_t | 2 of 4 | 1 breed karakter |
Opmerking : Bovenstaande waarden kunnen variëren van compiler tot compiler. In het bovenstaande voorbeeld hebben we GCC 32 bit beschouwd.
We kunnen de grootte van alle gegevenstypen weergeven door de operator sizeof() te gebruiken en het trefwoord van het gegevenstype door te geven als argument voor deze functie, zoals hieronder weergegeven:
Om het bereik van gegevenstypen te zien, raadpleegt u het volgende diagram
Opmerking: syntaxis header-bestand is gedefinieerd om het bereik van fundamentele gegevenstypen te vinden. Niet-ondertekende modifiers hebben een minimumwaarde van nul. Er zijn dus geen macroconstanten gedefinieerd voor de niet-ondertekende minimumwaarde.
Macroconstanten
| Naam | Expresseert |
|---|---|
| CHAR_MIN | De minimumwaarde voor een object van het type char |
| CHAR_MAX | Maximale waarde voor een object van het type char |
| SCHAR_MIN | De minimumwaarde voor een object van het type Signed char |
| SCHAR_MAX | Maximale waarde voor een object van het type Signed char |
| VLUCHT_MAX | Maximale waarde voor een object van het type Unsigned char |
| CHAR_BIT | Aantal bits in een char-object |
| MB_LEN_MAX | Maximaal aantal bytes in een multi-byteteken |
| SHRT_MIN | De minimumwaarde voor een object van het type short int |
| SHRT_MAX | Maximale waarde voor een object van het type short int |
| USHRT_MAX | Maximale waarde voor een object van het type Unsigned short int |
| INT_MIN | De minimumwaarde voor een object van het type int |
| INT_MAX | Maximale waarde voor een object van het type int |
| UINT_MAX | Maximale waarde voor een object van het type Unsigned int |
| LONG_MIN | De minimumwaarde voor een object van het type long int |
| LONG_MAX | Maximale waarde voor een object van het type long int |
| HEAD_MAX | Maximale waarde voor een object van het type Unsigned long int |
| SHIP_MIN | De minimumwaarde voor een object van het type long long int |
| LLONG_MAX | Maximale waarde voor een object van het type long long int |
| ULLONG_MAX | Maximale waarde voor een object van het type Unsigned long long int |
De werkelijke waarde hangt af van de specifieke systeem- en bibliotheekimplementatie, maar zal de beperkingen van deze typen op het doelplatform weerspiegelen. LLONG_MIN, LLONG_MAX en ULLONG_MAX zijn gedefinieerd voor bibliotheken die voldoen aan de C-standaard van 1999 of later (die sinds 2011 alleen de C++-standaard omvat: C++11).
C++ Programma om het bereik van gegevenstypen te vinden met behulp van macroconstanten
Voorbeeld:
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;> }> |
>
>Uitvoer
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>
Tijdcomplexiteit: O(1)
Ruimtecomplexiteit: 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;> }> |
>
>Uitvoer
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!>
Dit programma declareert variabelen van verschillende gegevenstypen, wijst er waarden aan toe en drukt vervolgens hun waarden af.
De gegevenstypen met gehele getallen omvatten int, short, long en long long. Deze gegevenstypen vertegenwoordigen hele getallen van verschillende grootte.
De gegevenstypen met drijvende komma omvatten float, double en long double. Deze gegevenstypen vertegenwoordigen reële getallen met verschillende nauwkeurigheidsniveaus.
De tekengegevenstypen omvatten char, wchar_t, char16_t en char32_t. Deze gegevenstypen vertegenwoordigen individuele tekens van verschillende groottes.
Het booleaanse gegevenstype is een eenvoudig gegevenstype dat slechts één van twee waarden kan hebben: waar of onwaar.
Het stringgegevenstype is een reeks tekens. In dit programma gebruiken we de klasse string om een stringvariabele te declareren en er een waarde aan toe te wijzen.
Voordelen :
Gegevenstypen bieden een manier om gegevens in een programma te categoriseren en te organiseren, waardoor het gemakkelijker te begrijpen en te beheren is.
Elk gegevenstype heeft een specifiek bereik aan waarden dat het kan bevatten, waardoor een nauwkeurigere controle mogelijk is over het type gegevens dat wordt opgeslagen.
Gegevenstypen helpen fouten en bugs in een programma te voorkomen door strikte regels af te dwingen over hoe gegevens kunnen worden gebruikt en gemanipuleerd.
C++ biedt een breed scala aan gegevenstypen, waardoor ontwikkelaars het beste type voor een specifieke taak kunnen kiezen.
Nadelen :
Het gebruik van het verkeerde gegevenstype kan leiden tot onverwacht gedrag en fouten in een programma.
Sommige gegevenstypen, zoals lange doubles of char-arrays, kunnen een grote hoeveelheid geheugen in beslag nemen en de prestaties beïnvloeden als ze overmatig worden gebruikt.
Het complexe typesysteem van C++ kan het voor beginners moeilijk maken om de taal effectief te leren en te gebruiken.
Het gebruik van gegevenstypen kan extra complexiteit en breedsprakigheid aan een programma toevoegen, waardoor het moeilijker te lezen en te begrijpen is.