Tots les variables utilitzeu el tipus de dades durant la declaració per restringir el tipus de dades que s'emmagatzemen. Per tant, podem dir que els tipus de dades s'utilitzen per indicar a les variables el tipus de dades que poden emmagatzemar. Sempre que es defineix una variable en C++, el compilador assigna una mica de memòria per a aquesta variable en funció del tipus de dades amb què es declara. Cada tipus de dades requereix una quantitat diferent de memòria.
C++ admet una gran varietat de tipus de dades i el programador pot seleccionar el tipus de dades adequat a les necessitats de l'aplicació. Els tipus de dades especifiquen la mida i els tipus de valors que s'han d'emmagatzemar. Tanmateix, la representació d'emmagatzematge i les instruccions de la màquina per manipular cada tipus de dades difereixen d'una màquina a una altra, tot i que les instruccions C++ són idèntiques a totes les màquines.
C++ admet els tipus de dades següents:
- primària o Integrat o Tipus de dades fonamentals
- Tipus de dades derivades
- Tipus de dades definides per l'usuari

Els tipus de dades en C++ es divideixen principalment en 3 tipus:
1. Tipus de dades primitives : Aquests tipus de dades són tipus de dades predefinits o integrats i l'usuari els pot utilitzar directament per declarar variables. exemple: int, char, float, bool, etc. Els tipus de dades primitives disponibles en C++ són:
- Enter
- Personatge
- booleà
- Punt flotant
- Doble coma flotant
- Sense valor o buit
- Caràcter ample
2. Tipus de dades derivades: Funció
3. Tipus de dades abstractes o definides per l'usuari : Classe
Tipus de dades primitives
- Classe
- Enter : La paraula clau utilitzada per als tipus de dades enters és int . Els nombres enters solen requerir 4 bytes d'espai de memòria i van des de -2147483648 fins a 2147483647.
- Personatge : El tipus de dades de caràcters s'utilitza per emmagatzemar caràcters. La paraula clau utilitzada per al tipus de dades de caràcter és char . Els caràcters solen requerir 1 byte d'espai de memòria i van de -128 a 127 o de 0 a 255.
- booleà : el tipus de dades booleà s'utilitza per emmagatzemar valors booleans o lògics. Una variable booleana pot emmagatzemar qualsevol de les dues veritat o fals . La paraula clau utilitzada per al tipus de dades booleà és bool .
- Punt flotant : el tipus de dades de coma flotant s'utilitza per emmagatzemar valors de coma flotant d'una precisió o valors decimals. La paraula clau utilitzada per al tipus de dades de coma flotant és flotar . Les variables flotants solen requerir 4 bytes d'espai de memòria.
- Doble coma flotant : el tipus de dades de coma flotant doble s'utilitza per emmagatzemar valors de coma flotant de doble precisió o valors decimals. La paraula clau utilitzada per al tipus de dades de coma flotant doble és doble . Les variables dobles solen requerir 8 bytes d'espai de memòria.
- buit : Buit vol dir sense cap valor. el tipus de dades void representa una entitat sense valor. S'utilitza un tipus de dades void per a aquelles funcions que no retornen cap valor.
- Classe
- Caràcter ample : Caràcter ample El tipus de dades també és un tipus de dades de caràcter, però aquest tipus de dades té una mida més gran que el tipus de dades normal de 8 bits. Representat per wchar_t . Generalment té 2 o 4 bytes de llargada.
- operador sizeof(): operador sizeof(). s'utilitza per trobar el nombre de bytes ocupats per una variable/tipus de dades a la memòria de l'ordinador.
Exemple:
int m , x[50];
cout<
cout<
La mida de les variables pot ser diferent de les que es mostren a la taula anterior, depenent del compilador i de l'ordinador que utilitzeu.
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;> }> |
>
>Sortida
Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8>
Complexitat temporal: O(1)
Complexitat espacial: O(1)
Modificadors de tipus de dades
Com el seu nom indica, els modificadors de tipus de dades s'utilitzen amb els tipus de dades integrats per modificar la longitud de les dades que pot contenir un tipus de dades concret.

Els modificadors de tipus de dades disponibles en C++ són:
- Signat
- Sense signar
- Curt
- Llarg
La taula següent resumeix la mida i l'interval modificat dels tipus de dades integrats quan es combinen amb els modificadors de tipus:
| Tipus de dades | Mida (en bytes) | Interval |
|---|---|---|
| curt int | 2 | -32.768 a 32.767 |
| int curt sense signar | 2 | 0 a 65.535 |
| int sense sign | 4 | 0 a 4.294.967.295 |
| int | 4 | -2.147.483.648 a 2.147.483.647 el nom de |
| llarg int | 4 | -2.147.483.648 a 2.147.483.647 |
| unsigned long int | 4 | 0 a 4.294.967.295 |
| llarg llarg int | 8 | -(2^63) a (2^63)-1 |
| sense signar llarg llarg int | 8 | 0 a 18.446.744.073.709.551.615 |
| caràcter signat | 1 | -128 a 127 |
| caràcter sense signar | 1 | 0 a 255 |
| flotar | 4 | -3,4×10^38 a 3,4×10^38 |
| doble | 8 | -1,7×10^308 a 1,7×10^308 |
| doble llarg | 12 | -1,1×10^4932 a 1,1×10^4932 |
| wchar_t | 2 o 4 | 1 caràcter ample |
Nota : els valors anteriors poden variar d'un compilador a un altre. A l'exemple anterior, hem considerat GCC de 32 bits.
Podem mostrar la mida de tots els tipus de dades utilitzant l'operador sizeof() i passant la paraula clau del tipus de dades, com a argument per a aquesta funció, tal com es mostra a continuació:
Ara per obtenir el rang de tipus de dades, consulteu el gràfic següent
Nota: sintaxi El fitxer de capçalera es defineix per trobar el rang de tipus de dades fonamentals. Els modificadors sense signe tenen un valor mínim zero. Per tant, no es defineix cap constant de macro per al valor mínim sense signe.
Constants macro
| Nom | Expressa |
|---|---|
| CHAR_MIN | El valor mínim per a un objecte del tipus char |
| CHAR_MAX | Valor màxim per a un objecte del tipus char |
| SCHAR_MIN | El valor mínim per a un objecte del tipus Signed char |
| SCHAR_MAX | Valor màxim per a un objecte del tipus Signed char |
| FLIGHT_MAX | Valor màxim per a un objecte del tipus Unsigned char |
| CHAR_BIT | Nombre de bits en un objecte char |
| MB_LEN_MAX | Nombre màxim de bytes en un caràcter de diversos bytes |
| SHRT_MIN | El valor mínim per a un objecte de tipus short int |
| SHRT_MAX | Valor màxim per a un objecte de tipus short int |
| USHRT_MAX | Valor màxim per a un objecte del tipus Unsigned short int |
| INT_MIN | El valor mínim per a un objecte de tipus int |
| INT_MAX | Valor màxim per a un objecte de tipus int |
| UINT_MAX | Valor màxim per a un objecte del tipus Unsigned int |
| LONG_MIN | El valor mínim per a un objecte de tipus long int |
| LONG_MAX | Valor màxim per a un objecte de tipus long int |
| HEAD_MAX | Valor màxim per a un objecte del tipus Unsigned long int |
| SHIP_MIN | El valor mínim per a un objecte de tipus long long int |
| LLONG_MAX | Valor màxim per a un objecte de tipus long long int |
| ULLONG_MAX | Valor màxim per a un objecte del tipus Unsigned long long int |
El valor real depèn del sistema particular i de la implementació de la biblioteca, però reflectirà els límits d'aquests tipus a la plataforma objectiu. LLONG_MIN, LLONG_MAX i ULLONG_MAX es defineixen per a biblioteques que compleixen l'estàndard C de 1999 o posterior (que només inclou l'estàndard C++ des del 2011: C++11).
Programa C++ per trobar el rang de tipus de dades mitjançant constants de macro
Exemple:
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;> }> |
>
>Sortida
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>
Complexitat temporal: O(1)
Complexitat espacial: 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;> }> |
>
>Sortida
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!>
Aquest programa declara variables de diversos tipus de dades, els assigna valors i després imprimeix els seus valors.
Els tipus de dades enters inclouen int, short, long i long long. Aquests tipus de dades representen nombres enters de diferents mides.
Els tipus de dades de coma flotant inclouen float, double i long double. Aquests tipus de dades representen nombres reals amb diferents nivells de precisió.
Els tipus de dades de caràcters inclouen char, wchar_t, char16_t i char32_t. Aquests tipus de dades representen caràcters individuals de diferents mides.
El tipus de dades booleà és un tipus de dades simple que només pot tenir un dels dos valors: true o false.
El tipus de dades de cadena és una seqüència de caràcters. En aquest programa, fem servir la classe de cadena per declarar una variable de cadena i assignar-li un valor.
Avantatges :
Els tipus de dades proporcionen una manera de classificar i organitzar les dades en un programa, facilitant-ne la comprensió i la gestió.
Cada tipus de dades té un rang específic de valors que pot contenir, cosa que permet un control més precís sobre el tipus de dades que s'emmagatzemen.
Els tipus de dades ajuden a prevenir errors i errors en un programa mitjançant l'aplicació de regles estrictes sobre com es poden utilitzar i manipular les dades.
C++ ofereix una àmplia gamma de tipus de dades, cosa que permet als desenvolupadors triar el millor tipus per a una tasca específica.
Desavantatges :
L'ús del tipus de dades incorrecte pot provocar un comportament inesperat i errors en un programa.
Alguns tipus de dades, com ara els dobles llargs o les matrius de caràcters, poden ocupar una gran quantitat de memòria i afectar el rendiment si s'utilitzen excessivament.
El complex sistema de tipus C++ pot dificultar que els principiants aprenguin i utilitzin el llenguatge de manera eficaç.
L'ús de tipus de dades pot afegir complexitat i detalls addicionals a un programa, cosa que fa que sigui més difícil de llegir i entendre.