title: Type check
text: # Type check
  
  In informatica con type check si indica l'operazione che consiste nel controllare che i valori assegnati ad una variabile siano di un tipo di dato ammissibile per il tipo della variabile.
  
  Questa operazione è fondamentale per i linguaggi tipizzati come il C++, dove l'interpretazione del contenuto di una variabile dipende dal suo tipo. Non viene invece effettuata per i linguaggi senza tipi, dove invece è la variabile ad adattarsi al dato che le viene assegnato.
  
  La definizione di un linguaggio tipizzato comprende anche le regole che determinano se una conversione di tipo (type casting) sia ammissibile. Ad esempio, normalmente si può assegnare un intero a 16 bit ad uno a 32 bit, perché non c'è rischio di perdere informazione, mentre non si può fare il contrario.
  
  Alcuni linguaggi utilizzano un type checking statico, ovvero effettuano questo controllo al momento della compilazione, e rifiutano di compilare un programma se ad esempio si tenta di assegnare un intero ad una variabile di tipo puntatore.
  
  Altri effettuano il type checking a runtime, e il compilatore incorpora automaticamente nei programmi eseguibili la logica per valutare se un assegnamento è ammissibile.
  
  