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 bitoccorre sapere quanti bit la compongono, e, come vedremo,qual è la loro organizzazione al suo interno. Lapiù ristretta sequenza di bit significativa per lemacchine è il byte, che si compone di 8bit[2]. 

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

La sequenza di bit di ampiezza immediatamente superiore albyte è detta word. Qui il discorso si complicaleggermente, perché mentre il byte si compone di 8 bitsu quasi tutte le macchine, la dimensione della word dipendedal microprocessore che questa utilizza, e può essere,generalmente, di 16 o 32 bit. Nelle pagine che seguono faremoriferimento alla word come ad una sequenza di 16 bit, inquanto è tale la sua dimensione su tutte le macchineche utilizzano i processori Intel 8086 o 8088, o i chips80286, 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'integerpuò essere signed o unsigned. Dandoper scontato, come appena detto, che un integer (cioèuna word) occupi 16 bit, i valori estremi del signed integersono ­32768 e 32767, mentre quellidell'unsigned integer sono 0 e65535

Tra il character e l'integer si colloca lo shortinteger, che può essere, manco a dirlo,signed o unsigned. Lo short integer occupa16 bit, perciò stanti le assunzioni sulla dimensionedella word, ai nostri fini short integer e integer sonoequivalenti. 

Per esprimere valori interi di notevole entità il Cdefinisce il long integer, che occupa 32 bit. Anche illong integer può essere signed ounsigned. Nelle macchine in cui la word è di32 bit, integer e long integer coincidono. 

Tutti i tipi sin qui descritti possono rappresentare solovalori interi, e sono perciò detti integraltypes

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

La tabella che segue riassume le caratteristiche dei tipi didato 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 a3.4*1038  7 cifre
double precision 64
da 1.7*10-308 a1.7*10308  15 cifre
long double precision 80
da 3.4*10-4932 a1.1*104932  19 cifre

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

Vi è, infine, un tipo di dato particolare,utilizzabile per esprimere l'assenza di dati o perevitare di specificare a quale tipo, tra quelli appenadescritti, appartenga il dato: si tratta del voidtype. Esso può essere utilizzato esclusivamenteper 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