Indice

Esercitazione 4

Dove si esplorano alcune caratteristiche dei tipi di dato e del meccanismo di conversione C.

Esercizio 1: Lunghezza dei tipi in C

Data la seguente lista non esaustiva, dei nomi accettati per i tipi di base in C:

char
unsigned char
short
unsigned short
int
unsigned int
long
unsigned long
long long
float
double
long double 

utilzzate la funzione sizeof() per stampare la lunghezza in byte di ciascun tipo nella lista estendendo il seguente codice

#include <stdio.h>

int main (void) {
  printf("il tipo int e' lungo %lu.\n",sizeof(int));
  return 0;
}

Verificate inoltre che lo la richiesta dello standard venga rispettata, cioe':

sizeof(short) <= sizeof (int) <= sizeof(long)

Esercizio 2: L'intervallo di rappresentazione dei tipi ''int''

Nel file limits.h sono contenute le macro che forniscono i massimi e minimi numeri rappresentabli da ogni tipo C, in particolare:

SHRT_MIN SHRT_MAX
INT_MIN INT_MAX
LONG_MIN LONG_MAX

sono i limiti inferiori e superiori per gli interi con segno dei vari tipi base. Scrivere un programma C che li stampa e verificare che corrispondono ai valori dell'intervallo di rappresentabilita'

(-2^{n-1}, 2^{n-1} -1)

dove n e' il numero di bit utilizzati da ciascuna rappresentazione.

Esercizio 3: I tipi ''unsigned''

Scrivere un programma C che legge un intero N senza segno da standard input e lo stampa sullo standard output in notazione decimale, ottale ed esadecimale utilizzando la funzione printf().

Estendere il programma in modo che stampi anche la rappresentazione binaria di N.

Esercizio 4: Codici ASCII

Scrivere un programma C che stampa i codici ASCII di tutte le lettere minuscole e maiuscole.

Esercizio 5: Trasformare in maiuscole

Scrivere un programma C che legge in input un carattere minuscolo e lo trasforma in un carattere maiuscolo. Controllare che il carattere letto sia effettivamente una lettera minuscola.

Esercizio 6: Esplorare i reali....

float.h e' il file che descrive la rappresentazione dei reali in una particolare implementazione C. Le principali costanti sono descritte qui.

Scrivere un programma C che stampa i limiti di rappresentazione dei principali tipi reali ed alcune delle costanti di float.h relative alla lunghezza della rappresentazione (lunghezza mantissa, esponente etc).