Tutto variabili utilizzare il tipo di dati durante la dichiarazione per limitare il tipo di dati da archiviare. Pertanto, possiamo dire che i tipi di dati vengono utilizzati per indicare alle variabili il tipo di dati che possono archiviare. Ogni volta che una variabile viene definita in C++, il compilatore alloca memoria per quella variabile in base al tipo di dati con cui viene dichiarata. Ogni tipo di dati richiede una diversa quantità di memoria.
C++ supporta un'ampia varietà di tipi di dati e il programmatore può selezionare il tipo di dati appropriato alle esigenze dell'applicazione. I tipi di dati specificano la dimensione e i tipi di valori da archiviare. Tuttavia, la rappresentazione della memoria e le istruzioni della macchina per manipolare ciascun tipo di dati differiscono da macchina a macchina, sebbene le istruzioni C++ siano identiche su tutte le macchine.
C++ supporta i seguenti tipi di dati:
- Primario O Integrato O Tipo di dati fondamentale
- Tipi di dati derivati
- Tipi di dati definiti dall'utente

I tipi di dati in C++ sono principalmente divisi in 3 tipi:
1. Tipi di dati primitivi : Questi tipi di dati sono tipi di dati incorporati o predefiniti e possono essere utilizzati direttamente dall'utente per dichiarare variabili. esempio: int, char, float, bool, ecc. I tipi di dati primitivi disponibili in C++ sono:
- Numero intero
- Carattere
- Booleano
- Virgola mobile
- Doppia virgola mobile
- Senza valore o vuoto
- Carattere ampio
2. Tipi di dati derivati: Funzione
3. Tipi di dati astratti o definiti dall'utente : Classe
Tipi di dati primitivi
- Classe
- Numero intero : La parola chiave utilizzata per i tipi di dati interi è int . I numeri interi richiedono in genere 4 byte di spazio di memoria e vanno da -2147483648 a 2147483647.
- Carattere : Il tipo di dati carattere viene utilizzato per memorizzare i caratteri. La parola chiave utilizzata per il tipo di dati carattere è car . I caratteri in genere richiedono 1 byte di spazio di memoria e vanno da -128 a 127 o da 0 a 255.
- Booleano : il tipo di dati booleano viene utilizzato per memorizzare valori booleani o logici. Una variabile booleana può memorizzare entrambi VERO O falso . La parola chiave utilizzata per il tipo di dati booleano è bool .
- Virgola mobile : Il tipo di dati a virgola mobile viene utilizzato per memorizzare valori a virgola mobile a precisione singola o valori decimali. La parola chiave utilizzata per il tipo di dati a virgola mobile è galleggiante . Le variabili float richiedono in genere 4 byte di spazio di memoria.
- Doppia virgola mobile : il tipo di dati Double Floating Point viene utilizzato per memorizzare valori a virgola mobile a precisione doppia o valori decimali. La parola chiave utilizzata per il tipo di dati a virgola mobile doppio è Doppio . Le variabili doppie richiedono in genere 8 byte di spazio di memoria.
- vuoto : Vuoto significa senza alcun valore. il tipo di dati void rappresenta un'entità senza valore. Un tipo di dati void viene utilizzato per quelle funzioni che non restituiscono un valore.
- Classe
- Carattere ampio : Carattere ampio anche il tipo di dati è un tipo di dati carattere, ma questo tipo di dati ha una dimensione maggiore del normale tipo di dati a 8 bit. Rappresentata da wchar_t . Generalmente è lungo 2 o 4 byte.
- operatore sizeof(): operatore sizeof() viene utilizzato per trovare il numero di byte occupati da una variabile/tipo di dati nella memoria del computer.
Esempio:
intm,x[50];
cout<
cout<
La dimensione delle variabili potrebbe essere diversa da quelle mostrate nella tabella sopra, a seconda del compilatore e del computer che stai utilizzando.
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;> }> |
>
>Produzione
Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8>
Complessità temporale: O(1)
Complessità spaziale: O(1)
Modificatori del tipo di dati
Come suggerisce il nome, i modificatori del tipo di dati vengono utilizzati con i tipi di dati incorporati per modificare la lunghezza dei dati che un particolare tipo di dati può contenere.

I modificatori del tipo di dati disponibili in C++ sono:
- Firmato
- Non firmato
- Corto
- Lungo
La tabella seguente riassume la dimensione modificata e l'intervallo dei tipi di dati incorporati quando combinati con i modificatori di tipo:
| Tipo di dati | Dimensione (in byte) | Allineare |
|---|---|---|
| breve int | 2 | Da -32.768 a 32.767 |
| int breve senza segno | 2 | Da 0 a 65.535 |
| intero senza segno | 4 | da 0 a 4.294.967.295 |
| int | 4 | Da -2.147.483.648 a 2.147.483.647 leggere il file Excel in Java |
| lungo int | 4 | Da -2.147.483.648 a 2.147.483.647 |
| int lungo senza segno | 4 | da 0 a 4.294.967.295 |
| lungo lungo int | 8 | Da -(2^63) a (2^63)-1 |
| senza segno lungo lungo int | 8 | da 0 a 18.446.744.073.709.551.615 |
| firmato car | 1 | da -128 a 127 |
| carattere non firmato | 1 | da 0 a 255 |
| galleggiante | 4 | Da -3,4×10^38 a 3,4×10^38 |
| Doppio | 8 | Da -1,7×10^308 a 1,7×10^308 |
| doppio lungo | 12 | Da -1,1×10^4932 a 1,1×10^4932 |
| wchar_t | 2 o 4 | 1 carattere largo |
Nota : I valori sopra indicati possono variare da compilatore a compilatore. Nell'esempio sopra abbiamo considerato GCC a 32 bit.
Possiamo visualizzare la dimensione di tutti i tipi di dati utilizzando l'operatore sizeof() e passando la parola chiave del tipo di dati come argomento a questa funzione come mostrato di seguito:
Ora per ottenere la gamma di tipi di dati fare riferimento alla seguente tabella
Nota: sintassi il file di intestazione è definito per trovare l'intervallo di tipi di dati fondamentali. I modificatori senza segno hanno un valore minimo pari a zero. Pertanto, non sono definite costanti macro per il valore minimo senza segno.
Costanti macro
| Nome | Esprime |
|---|---|
| CAR_MIN | Il valore minimo per un oggetto di tipo char |
| CAR_MAX | Valore massimo per un oggetto di tipo char |
| SCAR_MIN | Il valore minimo per un oggetto di tipo Signed char |
| SCAR_MAX | Valore massimo per un oggetto di tipo Signed char |
| VOLO_MAX | Valore massimo per un oggetto di tipo Unsigned char |
| CAR_BIT | Numero di bit in un oggetto char |
| MB_LEN_MAX | Numero massimo di byte in un carattere multibyte |
| SHRT_MIN | Il valore minimo per un oggetto di tipo short int |
| SHRT_MAX | Valore massimo per un oggetto di tipo short int |
| USHRT_MAX | Valore massimo per un oggetto di tipo Unsigned short int |
| INT_MIN | Il valore minimo per un oggetto di tipo int |
| INT_MAX | Valore massimo per un oggetto di tipo int |
| UINT_MAX | Valore massimo per un oggetto di tipo Unsigned int |
| LUNGO_MIN | Il valore minimo per un oggetto di tipo long int |
| LUNGO_MAX | Valore massimo per un oggetto di tipo long int |
| TESTA_MAX | Valore massimo per un oggetto di tipo Unsigned long int |
| NAVE_MIN | Il valore minimo per un oggetto di tipo long long int |
| LLONG_MAX | Valore massimo per un oggetto di tipo long long int |
| ULLONG_MAX | Valore massimo per un oggetto di tipo Unsigned long long int |
Il valore effettivo dipende dal particolare sistema e dall'implementazione della libreria, ma rifletterà i limiti di questi tipi nella piattaforma di destinazione. LLONG_MIN, LLONG_MAX e ULLONG_MAX sono definiti per le librerie conformi allo standard C del 1999 o successivo (che include solo lo standard C++ dal 2011: C++11).
Programma C++ per trovare l'intervallo di tipi di dati utilizzando costanti macro
Esempio:
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;> }> |
>
>Produzione
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>
Complessità temporale: O(1)
Complessità spaziale: 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;> }> |
>
>Produzione
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!>
Questo programma dichiara variabili di vari tipi di dati, assegna loro dei valori e quindi stampa i loro valori.
I tipi di dati interi includono int, short, long e long long. Questi tipi di dati rappresentano numeri interi di dimensioni variabili.
I tipi di dati a virgola mobile includono float, double e long double. Questi tipi di dati rappresentano numeri reali con diversi livelli di precisione.
I tipi di dati carattere includono char, wchar_t, char16_t e char32_t. Questi tipi di dati rappresentano singoli caratteri di varie dimensioni.
Il tipo di dati booleano è un tipo di dati semplice che può avere solo uno di due valori: true o false.
Il tipo di dati stringa è una sequenza di caratteri. In questo programma utilizziamo la classe string per dichiarare una variabile stringa e assegnarle un valore.
Vantaggi :
I tipi di dati forniscono un modo per classificare e organizzare i dati in un programma, semplificandone la comprensione e la gestione.
Ciascun tipo di dati può contenere un intervallo specifico di valori, consentendo un controllo più preciso sul tipo di dati archiviati.
I tipi di dati aiutano a prevenire errori e bug in un programma applicando regole rigide su come i dati possono essere utilizzati e manipolati.
C++ fornisce un'ampia gamma di tipi di dati, consentendo agli sviluppatori di scegliere il tipo migliore per un'attività specifica.
Svantaggi :
L'utilizzo del tipo di dati errato può provocare comportamenti imprevisti ed errori in un programma.
Alcuni tipi di dati, come long double o array di caratteri, possono occupare una grande quantità di memoria e influire sulle prestazioni se utilizzati in modo eccessivo.
Il complesso sistema di tipi di C++ può rendere difficile per i principianti apprendere e utilizzare il linguaggio in modo efficace.
L'uso dei tipi di dati può aggiungere ulteriore complessità e verbosità a un programma, rendendone più difficile la lettura e la comprensione.