Barninga Z
a- a+

I tipi di dato: character, unsigned, integer short e long, floating point, double precision

I tipi di dato 

Al fine di attribuire significato ad una sequenza di bit occorre sapere quanti bit la compongono, e, come vedremo, qual è la loro organizzazione al suo interno. La più ristretta sequenza di bit significativa per le macchine è il byte, che si compone di 8 bit[2]. 

In C, al byte corrisponde il tipo di dato character, cioè carattere. Esso può assumere 256 valori diversi (28 = 256). Si distinguono due tipi di character: il signed character, in cui l'ottavo bit funge da indicatore di segno (se è 1 il valore è negativo), e l'unsigned character, che utilizza invece tutti gli 8 bit per esprimere il valore, e può dunque esclusivamente assumere valori positivi. Un signed char può variare tra ­128 e 127, mentre un unsigned char può esprimere valori tra 0 e 255

La sequenza di bit di ampiezza immediatamente superiore al byte è detta word. Qui il discorso si complica leggermente, perché mentre il byte si compone di 8 bit su quasi tutte le macchine, la dimensione della word dipende dal microprocessore che questa utilizza, e può essere, generalmente, di 16 o 32 bit. Nelle pagine che seguono faremo riferimento alla word come ad una sequenza di 16 bit, in quanto è tale la sua dimensione su tutte le macchine che utilizzano i processori Intel 8086 o 8088, o i chips 80286, 80386 e 80486 in modalità reale (cioè compatibile con l'Intel 8086). 

Il tipo di dato C corrispondente alla word è l'integer, cioè intero. Anche l'integer può essere signed o unsigned. Dando per scontato, come appena detto, che un integer (cioè una word) occupi 16 bit, i valori estremi del signed integer sono ­32768 e 32767, mentre quelli dell'unsigned integer sono 0 e 65535

Tra il character e l'integer si colloca lo short integer, che può essere, manco a dirlo, signed o unsigned. Lo short integer occupa 16 bit, perciò stanti le assunzioni sulla dimensione della word, ai nostri fini short integer e integer sono equivalenti. 

Per esprimere valori interi di notevole entità il C definisce il long integer, che occupa 32 bit. Anche il long integer può essere signed o unsigned. Nelle macchine in cui la word è di 32 bit, integer e long integer coincidono. 

Tutti i tipi sin qui descritti possono rappresentare solo valori interi, e sono perciò detti integral types

In C è naturalmente possibile gestire anche numeri in virgola mobile, mediante appositi tipi di dato[3]: il floating point, il double precision e il long double precision. Il floating point occupa 32 bit ed offre 7 cifre significative di precisione, il double precision occupa 64 bit con 15 cifre di precisione e il long double precision 80 bit[4] con 19 cifre di precisione. Tutti i tipi in virgola mobile sono dotati di segno. 

La tabella che segue riassume le caratteristiche dei tipi di dato sin qui descritti. 

TIPI DI DATO IN C 

 

TIPO
BIT
VALORI AMMESSI
Precisione
character 8
da -128 a 127 ­
unsigned character 8
da 0 a 255 ­
short integer 16
da -32768 a 32767 ­
unsigned short integer 16
da 0 a 65535 ­
integer 16
da -32768 a 32767 ­
unsigned integer 16
da 0 a 65535 ­
long integer 32
da -2147483648 a 2147483647  ­
unsigned long integer 32
da 0 a 4294967295 ­
floating point 32
da 3.4*10-38 a 3.4*1038  7 cifre
double precision 64
da 1.7*10-308 a 1.7*10308  15 cifre
long double precision 80
da 3.4*10-4932 a 1.1*104932  19 cifre

Il C non contempla un tipo di dato "stringa". Le stringhe di caratteri (come "Ciao Ciao! ") sono gestite come array di character, cioè come sequenze di caratteri che occupano posizioni contigue in memoria ed ai quali è possibile accedere mediante l'indice della loro posizione. Le stringhe possono anche essere gestite mediante i puntatori. 

Vi è, infine, un tipo di dato particolare, utilizzabile per esprimere l'assenza di dati o per evitare di specificare a quale tipo, tra quelli appena descritti, appartenga il dato: si tratta del void type. Esso può essere utilizzato esclusivamente per dichiarare puntatori void e funzioni.



Ti potrebbe interessare anche

commenta la notizia

Ci sono 2 commenti
Turbo
Ciao,
ottima guida. Avrei una domanda su questo capitolo.
Dalla frase: "ed offre 7 cifre significative di precisione", cosa significa in quel contesto significative? Le cifre di precisione sono le cifre dopo la virgola che il tipo può assumere?

Ringrazio eventuali risposte