Tipi di dati C++
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 |
| 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.