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.