- Programmazione » Programmazione » Guida C - Manuale programmazione con articoli e risorse interessanti
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
si sono le cifre dopo la virgola che il tipo può assumere.
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