Alle variabler bruge datatype under deklaration for at begrænse typen af data, der skal lagres. Derfor kan vi sige, at datatyper bruges til at fortælle variablerne, hvilken type data de kan gemme. Når en variabel er defineret i C++, allokerer compileren noget hukommelse til denne variabel baseret på den datatype, som den er erklæret med. Hver datatype kræver en forskellig mængde hukommelse.
C++ understøtter en lang række datatyper, og programmøren kan vælge den datatype, der passer til applikationens behov. Datatyper angiver størrelsen og typerne af værdier, der skal gemmes. Lagerrepræsentation og maskininstruktioner til at manipulere hver datatype varierer fra maskine til maskine, selvom C++-instruktioner er identiske på alle maskiner.
C++ understøtter følgende datatyper:
- Primær eller Indbygget eller Grundlæggende datatype
- Afledte datatyper
- Brugerdefinerede datatyper

Datatyper i C++ er hovedsageligt opdelt i 3 typer:
1. Primitive datatyper : Disse datatyper er indbyggede eller foruddefinerede datatyper og kan bruges direkte af brugeren til at erklære variabler. eksempel: int, char, float, bool osv. Primitive datatyper tilgængelige i C++ er:
- Heltal
- Karakter
- Boolean
- Flydende punkt
- Dobbelt flydende punkt
- Værdiløs eller ugyldig
- Bred karakter
2. Afledte datatyper: Fungere
3. Abstrakte eller brugerdefinerede datatyper : Klasse
Primitive datatyper
- Klasse
- Heltal : Nøgleordet, der bruges til heltalsdatatyper, er int . Heltal kræver typisk 4 bytes hukommelsesplads og spænder fra -2147483648 til 2147483647.
- Karakter : Tegndatatypen bruges til lagring af tegn. Nøgleordet brugt til karakterdatatypen er char . Tegn kræver typisk 1 byte hukommelsesplads og spænder fra -128 til 127 eller 0 til 255.
- Boolean : Boolsk datatype bruges til lagring af boolske eller logiske værdier. En boolsk variabel kan lagre enten rigtigt eller falsk . Nøgleordet brugt til den boolske datatype er bool .
- Flydende punkt : Flydende kommadatatype bruges til lagring af enkeltpræcisions flydende decimalværdier eller decimalværdier. Nøgleordet, der bruges til datatypen floating-point, er flyde . Float-variabler kræver typisk 4 bytes hukommelsesplads.
- Dobbelt flydende punkt : Dobbelt flydende komma datatype bruges til lagring af dobbelt præcision flydende decimalværdier eller decimalværdier. Nøgleordet, der bruges til datatypen med dobbelt flydende komma, er dobbelt . Dobbeltvariable kræver typisk 8 bytes hukommelsesplads.
- ugyldig : Ugyldig betyder uden nogen værdi. void datatype repræsenterer en værdiløs enhed. En void datatype bruges til de funktioner, som ikke returnerer en værdi.
- Klasse
- Bred karakter : Bred karakter datatype er også en karakterdatatype, men denne datatype har en størrelse større end den normale 8-bit datatype. Repræsenteret af wchar_t . Den er generelt 2 eller 4 byte lang.
- sizeof() operator: sizeof() operator bruges til at finde antallet af bytes optaget af en variabel/datatype i computerens hukommelse.
Eksempel:
int m, x[50];
cout<
cout<
Størrelsen af variabler kan være anderledes end dem, der er vist i ovenstående tabel, afhængigt af compileren og den computer, du bruger.
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;> }> |
>
>Produktion
Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8>
Tidskompleksitet: O(1)
Rumkompleksitet: O(1)
Datatypemodifikatorer
Som navnet antyder, bruges datatypemodifikatorer med indbyggede datatyper til at ændre længden af data, som en bestemt datatype kan indeholde.

Datatypemodifikatorer tilgængelige i C++ er:
- Underskrevet
- Usigneret
- Kort
- Lang
Nedenstående tabel opsummerer den ændrede størrelse og rækkevidde af indbyggede datatyper, når de kombineres med typemodifikatorerne:
| Datatype | Størrelse (i bytes) | Rækkevidde |
|---|---|---|
| kort int | 2 | -32.768 til 32.767 |
| usigneret kort int | 2 | 0 til 65.535 |
| usigneret int | 4 | 0 til 4.294.967.295 |
| int | 4 | -2.147.483.648 til 2.147.483.647 forskel på tiger og løve |
| lang int | 4 | -2.147.483.648 til 2.147.483.647 |
| usigneret lang int | 4 | 0 til 4.294.967.295 |
| lang lang int | 8 | -(2^63) til (2^63)-1 |
| usigneret lang lang int | 8 | 0 til 18.446.744.073.709.551.615 |
| signeret char | 1 | -128 til 127 |
| usigneret char | 1 | 0 til 255 |
| flyde | 4 | -3,4×10^38 til 3,4×10^38 |
| dobbelt | 8 | -1,7×10^308 til 1,7×10^308 |
| lang dobbelt | 12 | -1,1×10^4932 til 1,1×10^4932 |
| wchar_t | 2 eller 4 | 1 bred karakter |
Bemærk : Ovenstående værdier kan variere fra compiler til compiler. I ovenstående eksempel har vi overvejet GCC 32 bit.
Vi kan vise størrelsen af alle datatyperne ved at bruge sizeof() operatoren og sende nøgleordet for datatypen som et argument for denne funktion som vist nedenfor:
For nu at få udvalget af datatyper henvises til følgende diagram
Bemærk: syntaks header-fil er defineret for at finde rækken af grundlæggende datatyper. Modifikatorer uden fortegn har minimumværdien nul. Så der er ikke defineret makrokonstanter for minimumsværdien uden fortegn.
Makro konstanter
| Navn | Udtrykker |
|---|---|
| CHAR_MIN | Minimumsværdien for et objekt af typen char |
| CHAR_MAX | Maksimal værdi for et objekt af typen char |
| SCHAR_MIN | Minimumsværdien for et objekt af typen Signed char |
| SCHAR_MAX | Maksimal værdi for et objekt af typen Signeret tegn |
| FLIGHT_MAX | Maksimal værdi for et objekt af typen Unsigned char |
| CHAR_BIT | Antal bits i et char-objekt |
| MB_LEN_MAX | Maksimalt antal bytes i et multi-byte tegn |
| SHRT_MIN | Minimumsværdien for et objekt af typen short int |
| SHRT_MAX | Maksimal værdi for et objekt af typen short int |
| USHRT_MAX | Maksimal værdi for et objekt af typen Unsigned short int |
| INT_MIN | Minimumsværdien for et objekt af typen int |
| INT_MAX | Maksimal værdi for et objekt af typen int |
| UINT_MAX | Maksimal værdi for et objekt af typen Unsigned int |
| LONG_MIN | Minimumsværdien for et objekt af typen long int |
| LONG_MAX | Maksimal værdi for et objekt af typen long int |
| HEAD_MAX | Maksimal værdi for et objekt af typen Unsigned long int |
| SHIP_MIN | Minimumsværdien for et objekt af typen long long int |
| LLONG_MAX | Maksimal værdi for et objekt af typen long long int |
| ULLONG_MAX | Maksimal værdi for et objekt af typen Unsigned long long int |
Den faktiske værdi afhænger af det særlige system- og biblioteksimplementering, men skal afspejle grænserne for disse typer i målplatformen. LLONG_MIN, LLONG_MAX og ULLONG_MAX er defineret for biblioteker, der overholder C-standarden fra 1999 eller senere (som kun inkluderer C++-standarden siden 2011: C++11).
C++-program til at finde rækkevidden af datatyper ved hjælp af makrokonstanter
Eksempel:
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;> }> |
>
>Produktion
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>
Tidskompleksitet: O(1)
Rumkompleksitet: 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;> }> |
>
>Produktion
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!>
Dette program erklærer variabler af forskellige datatyper, tildeler værdier til dem og udskriver derefter deres værdier.
Heltalsdatatyperne inkluderer int, short, long og long long. Disse datatyper repræsenterer hele tal af varierende størrelse.
Datatyperne med flydende komma inkluderer float, double og long double. Disse datatyper repræsenterer reelle tal med varierende præcisionsniveauer.
Tegndatatyperne inkluderer char, wchar_t, char16_t og char32_t. Disse datatyper repræsenterer individuelle tegn af varierende størrelse.
Den boolske datatype er en simpel datatype, der kun kan have én af to værdier: sand eller falsk.
Strengdatatypen er en sekvens af tegn. I dette program bruger vi strengklassen til at erklære en strengvariabel og tildele den en værdi.
Fordele :
Datatyper giver mulighed for at kategorisere og organisere data i et program, hvilket gør det nemmere at forstå og administrere.
Hver datatype har en specifik række af værdier, den kan indeholde, hvilket giver mulighed for mere præcis kontrol over den type data, der lagres.
Datatyper hjælper med at forhindre fejl og fejl i et program ved at håndhæve strenge regler for, hvordan data kan bruges og manipuleres.
C++ giver en bred vifte af datatyper, hvilket giver udviklere mulighed for at vælge den bedste type til en specifik opgave.
Ulemper :
Brug af den forkerte datatype kan resultere i uventet adfærd og fejl i et program.
Nogle datatyper, såsom lange doubler eller char-arrays, kan optage en stor mængde hukommelse og påvirke ydeevnen, hvis de bruges overdrevent.
C++’s komplekse typesystem kan gøre det svært for begyndere at lære og bruge sproget effektivt.
Brugen af datatyper kan tilføje yderligere kompleksitet og detaljering til et program, hvilket gør det sværere at læse og forstå.