CAPITOLO 2 - Tipi di dati e operatori in C++.

2.3 – Tipi di dati in C++

I tipi di dati introdotti fino a questo punto sono: interi ( int ), reali ( float ), carattere ( char ). Il C++ è molto più ricco di tipi; ad esempio, gli interi si possono distinguere attraverso due caratteristiche:

  1. il numero di byte utilizzati per conservarli in memoria;
  2. la possibilità di rappresentare solo i numeri positivi ( unsigned ) o sia i positivi che i negativi (signed ).

I tipi interi con segno supportati dal C++ standard sono

1) char ; 2) short int ( o short ) ; 3) int ; 4) long int ( o long )

Può apparire strano vedere il tipo char nella lista degli interi, ma i caratteri sono rappresentati come interi compresi tra -128 e 127 o tra 0 e 255; la scelta del tipo segnato o non segnato dipende dal compilatore. L’istruzione ch=getchar(), dove ch è una variabile di tipo char, accetta un carattere ASCII in ingresso, ma il carattere è memorizzato come un intero nel computer.

L’implementazione degli interi in C++ è abbastanza libero purché si rispettino le seguenti condizioni:

Ognuno dei tipi precedenti può essere qualificato anche come unsigned per cui il computer interpreta anche il primo bit come numero binario e non come complemento a due. In questo modo gli interi unsigned rappresentano dei valori interi compresi tra 0 ed il massimo numero intero rappresentabile con quel numero di byte.

La funzione sizeof applicata ad un tipo restituisce la sua lunghezza in byte: così sizeof(float) deve restituire 4, mentre gli altri valori dipendono dalla particolare implementazione.

In modo analogo, i tipi reali supportati dal C++ standard sono

1) float ; 2) double ; 3) long double

L’implementazione dei reali in C++ è ancora abbastanza libero purché si rispettino le seguenti condizioni:

Il file da includere <climits> contiene tutti i valori minimi e massimi degli interi: per esempio il minimo valore intero è contenuto in INT_MIN, il massimo in INT_MAX.

Il file header <cfloat> contiene i limiti dei tipi float, double e long double.

Costante Descrizione
FLT_MIN Minimo valore float
FLT_MAX Massimo valore float
DBL_MIN Minimo valore double
DBL_MAX Massimo valore double
LDBL_MIN Minimo valore Long double
LDBL_MAX Massimo valore Long double

Esercizio. Scrivere un programma che stampi la lunghezza in byte di ogni tipo ( short, int, unsigned, float, double, long double, char ) e i valori minimi e massimi di tutti i tipi reali ( float, double, long double).