Programmazione D - Tipi di dati
Nel linguaggio di programmazione D, i tipi di dati si riferiscono a un ampio sistema utilizzato per dichiarare variabili o funzioni di diversi tipi. Il tipo di variabile determina quanto spazio occupa nella memoria e come viene interpretata la sequenza di bit memorizzata.
I tipi in D possono essere classificati come segue:
Sr.No. | Tipi e descrizione |
---|---|
1 | Basic Types Sono tipi aritmetici e sono costituiti da tre tipi: (a) intero, (b) virgola mobile e (c) carattere. |
2 | Enumerated types Sono ancora tipi aritmetici. Vengono utilizzati per definire variabili a cui è possibile assegnare solo determinati valori interi discreti in tutto il programma. |
3 | The type void L'identificatore di tipo void indica che non è disponibile alcun valore. |
4 | Derived types Includono (a) tipi di puntatore, (b) tipi di array, (c) tipi di struttura, (d) tipi di unione e (e) tipi di funzione. |
I tipi di matrice e i tipi di struttura vengono indicati collettivamente come i tipi di aggregazione. Il tipo di una funzione specifica il tipo di valore restituito dalla funzione. Vedremo i tipi di base nella sezione seguente, mentre altri tipi saranno trattati nei prossimi capitoli.
Tipi interi
La tabella seguente fornisce elenchi di tipi interi standard con le relative dimensioni di archiviazione e intervalli di valori:
genere | Dimensioni di archiviazione | Intervallo di valori |
---|---|---|
bool | 1 byte | falso o vero |
byte | 1 byte | Da -128 a 127 |
ubyte | 1 byte | Da 0 a 255 |
int | 4 byte | -2.147.483.648 a 2.147.483.647 |
uint | 4 byte | Da 0 a 4.294.967.295 |
corto | 2 byte | Da -32.768 a 32.767 |
ushort | 2 byte | Da 0 a 65.535 |
lungo | 8 byte | -9223372036854775808 a 9223372036854775807 |
ulong | 8 byte | 0 a 18446744073709551615 |
Per ottenere la dimensione esatta di un tipo o di una variabile, puoi utilizzare il sizeofoperatore. Il tipo di espressione . (Sizeof) restituisce la dimensione di archiviazione dell'oggetto o il tipo in byte. L'esempio seguente ottiene la dimensione del tipo int su qualsiasi macchina:
import std.stdio;
int main() {
writeln("Length in bytes: ", ulong.sizeof);
return 0;
}
Quando compili ed esegui il programma sopra, produce il seguente risultato:
Length in bytes: 8
Tipi in virgola mobile
La tabella seguente menziona i tipi di virgola mobile standard con dimensioni di archiviazione, intervalli di valori e il loro scopo:
genere | Dimensioni di archiviazione | Intervallo di valori | Scopo |
---|---|---|---|
galleggiante | 4 byte | Da 1.17549e-38 a 3.40282e + 38 | 6 cifre decimali |
Doppio | 8 byte | Da 2.22507e-308 a 1.79769e + 308 | 15 cifre decimali |
vero | 10 byte | Da 3.3621e-4932 a 1.18973e + 4932 | il tipo in virgola mobile più grande supportato dall'hardware o doppio; qualunque sia il più grande |
ifloat | 4 byte | Da 1.17549e-38i a 3.40282e + 38i | tipo di valore immaginario di float |
idouble | 8 byte | Da 2.22507e-308i a 1.79769e + 308i | tipo di valore immaginario di double |
io veramente | 10 byte | Da 3.3621e-4932 a 1.18973e + 4932 | tipo di valore immaginario di reale |
cfloat | 8 byte | Da 1.17549e-38 + 1.17549e-38i a 3.40282e + 38 + 3.40282e + 38i | tipo di numero complesso composto da due float |
cdouble | 16 byte | Da 2.22507e-308 + 2.22507e-308i a 1.79769e + 308 + 1.79769e + 308i | tipo di numero complesso composto da due doppi |
creal | 20 byte | Da 3.3621e-4932 + 3.3621e-4932i a 1.18973e + 4932 + 1.18973e + 4932i | tipo di numero complesso composto da due reali |
L'esempio seguente stampa lo spazio di archiviazione occupato da un tipo float e dai suoi valori di intervallo:
import std.stdio;
int main() {
writeln("Length in bytes: ", float.sizeof);
return 0;
}
Quando compili ed esegui il programma sopra, produce il seguente risultato su Linux:
Length in bytes: 4
Tipi di carattere
La tabella seguente elenca i tipi di carattere standard con dimensioni di archiviazione e il relativo scopo.
genere | Dimensioni di archiviazione | Scopo |
---|---|---|
char | 1 byte | Unità di codice UTF-8 |
wchar | 2 byte | Unità di codice UTF-16 |
dchar | 4 byte | Unità di codice UTF-32 e punto di codice Unicode |
L'esempio seguente stampa lo spazio di archiviazione occupato da un tipo di carattere.
import std.stdio;
int main() {
writeln("Length in bytes: ", char.sizeof);
return 0;
}
Quando compili ed esegui il programma sopra, produce il seguente risultato:
Length in bytes: 1
Il tipo vuoto
Il tipo void specifica che non è disponibile alcun valore. Viene utilizzato in due tipi di situazioni:
Sr.No. | Tipi e descrizione |
---|---|
1 | Function returns as void Ci sono varie funzioni in D che non restituiscono valore oppure puoi dire che restituiscono void. Una funzione senza valore restituito ha il tipo restituito void. Per esempio,void exit (int status); |
2 | Function arguments as void Ci sono varie funzioni in D che non accettano alcun parametro. Una funzione senza parametro può accettare come un vuoto. Per esempio,int rand(void); |
Il tipo di vuoto potrebbe non essere compreso a questo punto, quindi procediamo e tratteremo questi concetti nei prossimi capitoli.