Alle variabler bruke datatype under deklarering for å begrense typen data som skal lagres. Derfor kan vi si at datatyper brukes til å fortelle variablene hvilken type data de kan lagre. Når en variabel er definert i C++, tildeler kompilatoren noe minne for den variabelen basert på datatypen den er deklarert med. Hver datatype krever en annen mengde minne.
C++ støtter et bredt utvalg av datatyper og programmereren kan velge datatypen som passer til applikasjonens behov. Datatyper spesifiserer størrelsen og typene av verdier som skal lagres. Lagringsrepresentasjon og maskininstruksjoner for å manipulere hver datatype varierer imidlertid fra maskin til maskin, selv om C++-instruksjoner er identiske på alle maskiner.
C++ støtter følgende datatyper:
- Hoved eller Innebygd eller Grunnleggende datatype
- Avledede datatyper
- Brukerdefinerte datatyper

Datatyper i C++ er hovedsakelig delt inn i 3 typer:
1. Primitive datatyper : Disse datatypene er innebygde eller forhåndsdefinerte datatyper og kan brukes direkte av brukeren til å deklarere variabler. eksempel: int, char, float, bool osv. Primitive datatyper tilgjengelig i C++ er:
- Heltall
- Karakter
- boolsk
- Flytende punkt
- Dobbelt flytende punkt
- Verdiløs eller ugyldig
- Bred karakter
2. Avledede datatyper: Funksjon
3. Abstrakte eller brukerdefinerte datatyper : Klasse
Primitive datatyper
- Klasse
- Heltall : Nøkkelordet som brukes for heltallsdatatyper er int . Heltall krever vanligvis 4 byte med minneplass og varierer fra -2147483648 til 2147483647.
- Karakter : Tegndatatypen brukes til å lagre tegn. Nøkkelordet som brukes for karakterdatatypen er røye . Tegn krever vanligvis 1 byte med minneplass og varierer fra -128 til 127 eller 0 til 255.
- boolsk : Boolsk datatype brukes til å lagre boolske eller logiske verdier. En boolsk variabel kan lagre enten ekte eller falsk . Nøkkelordet som brukes for den boolske datatypen er bool .
- Flytende punkt : Flytpunktdatatypen brukes til å lagre flytende kommaverdier eller desimalverdier med én presisjon. Nøkkelordet som brukes for flyttallsdatatypen er flyte . Float-variabler krever vanligvis 4 byte med minneplass.
- Dobbelt flytende punkt : Dobbel flytpunkt-datatype brukes til å lagre flytende kommaverdier eller desimalverdier med dobbel presisjon. Nøkkelordet som brukes for datatypen med doble flyttall er dobbelt . Doble variabler krever vanligvis 8 byte med minneplass.
- tomrom : Ugyldig betyr uten verdi. void datatype representerer en verdiløs enhet. En void datatype brukes for de funksjonene som ikke returnerer en verdi.
- Klasse
- Bred karakter : Bred karakter datatypen er også en tegndatatype, men denne datatypen har en størrelse som er større enn den vanlige 8-biters datatypen. Representert av wchar_t . Den er vanligvis 2 eller 4 byte lang.
- sizeof() operator: sizeof() operator brukes til å finne antall byte okkupert av en variabel/datatype i datamaskinens minne.
Eksempel:
int m , x[50];
cout<
cout<
Størrelsen på variablene kan være forskjellig fra de som er vist i tabellen ovenfor, avhengig av kompilatoren og datamaskinen du bruker.
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;> }> |
>
>Produksjon
Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8>
Tidskompleksitet: O(1)
Plass kompleksitet: O(1)
Datatypemodifikatorer
Som navnet antyder, brukes datatypemodifikatorer med innebygde datatyper for å endre lengden på data som en bestemt datatype kan inneholde.

Datatypemodifikatorer tilgjengelig i C++ er:
- Signert
- Usignert
- Kort
- Lang
Tabellen nedenfor oppsummerer den modifiserte størrelsen og utvalget av innebygde datatyper når de kombineres med typemodifikatorene:
| Data-type | Størrelse (i byte) | Område |
|---|---|---|
| kort int | 2 | -32.768 til 32.767 |
| usignert kort int | 2 | 0 til 65.535 |
| usignert int | 4 | 0 til 4.294.967.295 |
| int | 4 | -2 147 483 648 til 2 147 483 647 centos vs rhel |
| lang int | 4 | -2 147 483 648 til 2 147 483 647 |
| usignert lang int | 4 | 0 til 4.294.967.295 |
| lang lang int | 8 | -(2^63) til (2^63)-1 |
| usignert lang lang int | 8 | 0 til 18 446 744 073 709 551 615 |
| signert røye | 1 | -128 til 127 |
| usignert røye | 1 | 0 til 255 |
| flyte | 4 | -3,4×10^38 til 3,4×10^38 |
| dobbelt | 8 | -1,7×10^308 til 1,7×10^308 |
| lang dobbel | 12 | -1,1×10^4932 til 1,1×10^4932 |
| wchar_t | 2 eller 4 | 1 bred karakter |
Merk : Verdiene ovenfor kan variere fra kompilator til kompilator. I eksemplet ovenfor har vi vurdert GCC 32 bit.
Vi kan vise størrelsen på alle datatypene ved å bruke sizeof()-operatoren og sende nøkkelordet til datatypen, som et argument til denne funksjonen som vist nedenfor:
Se følgende diagram for å få utvalget av datatyper
Merk: syntaks header-filen er definert for å finne utvalget av grunnleggende datatyper. Usignerte modifikatorer har minimumsverdien er null. Så ingen makrokonstanter er definert for minimumsverdien uten fortegn.
Makrokonstanter
| Navn | Uttrykker |
|---|---|
| CHAR_MIN | Minimumsverdien for et objekt av typen char |
| CHAR_MAX | Maksimal verdi for et objekt av typen char |
| SCHAR_MIN | Minimumsverdien for et objekt av typen Signed char |
| SCHAR_MAX | Maksimal verdi for et objekt av typen Signert char |
| FLIGHT_MAX | Maksimal verdi for et objekt av typen Unsigned char |
| CHAR_BIT | Antall biter i et char-objekt |
| MB_LEN_MAX | Maksimalt antall byte i et multi-byte tegn |
| SHRT_MIN | Minimumsverdien for et objekt av typen short int |
| SHRT_MAX | Maksimal verdi for et objekt av typen short int |
| USHRT_MAX | Maksimal verdi for et objekt av typen Unsigned short int |
| INT_MIN | Minimumsverdien for et objekt av typen int |
| INT_MAX | Maksimal verdi for et objekt av typen int |
| UINT_MAX | Maksimal verdi for et objekt av typen Usignert int |
| LONG_MIN | Minimumsverdien for et objekt av typen long int |
| LONG_MAX | Maksimal verdi for et objekt av typen long int |
| HEAD_MAX | Maksimal verdi for et objekt av typen Unsigned long int |
| SHIP_MIN | Minimumsverdien for et objekt av typen long long int |
| LLONG_MAX | Maksimal verdi for et objekt av typen long long int |
| ULLONG_MAX | Maksimal verdi for et objekt av typen Unsigned long long int |
Den faktiske verdien avhenger av det bestemte systemet og bibliotekimplementeringen, men skal gjenspeile grensene for disse typene i målplattformen. LLONG_MIN, LLONG_MAX og ULLONG_MAX er definert for biblioteker som samsvarer med C-standarden fra 1999 eller senere (som bare inkluderer C++-standarden siden 2011: C++11).
C++-program for å finne rekkevidden av datatyper ved hjelp av 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;> }> |
>
>Produksjon
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)
Plass kompleksitet: 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;> }> |
>
>Produksjon
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 programmet erklærer variabler av ulike datatyper, tildeler verdier til dem og skriver deretter ut verdiene deres.
Heltallsdatatypene inkluderer int, short, long og long long. Disse datatypene representerer hele tall av varierende størrelse.
Flytpunktdatatypene inkluderer flytende, dobbel og lang dobbel. Disse datatypene representerer reelle tall med varierende presisjonsnivåer.
Tegndatatypene inkluderer char, wchar_t, char16_t og char32_t. Disse datatypene representerer individuelle tegn av varierende størrelse.
Den boolske datatypen er en enkel datatype som bare kan ha én av to verdier: sann eller usann.
Strengdatatypen er en sekvens av tegn. I dette programmet bruker vi strengklassen til å erklære en strengvariabel og tilordne den en verdi.
Fordeler :
Datatyper gir en måte å kategorisere og organisere data i et program, noe som gjør det enklere å forstå og administrere.
Hver datatype har et spesifikt utvalg av verdier den kan inneholde, noe som gir mer presis kontroll over typen data som lagres.
Datatyper bidrar til å forhindre feil og feil i et program ved å håndheve strenge regler for hvordan data kan brukes og manipuleres.
C++ gir et bredt spekter av datatyper, slik at utviklere kan velge den beste typen for en spesifikk oppgave.
Ulemper :
Bruk av feil datatype kan føre til uventet oppførsel og feil i et program.
Noen datatyper, for eksempel lange dobler eller char arrays, kan ta opp mye minne og påvirke ytelsen hvis de brukes overdrevent.
C++s komplekse typesystem kan gjøre det vanskelig for nybegynnere å lære og bruke språket effektivt.
Bruken av datatyper kan legge til ekstra kompleksitet og detaljerthet til et program, noe som gjør det vanskeligere å lese og forstå.