Vai al contenuto
Topos Uranos

Riepilogo

Un tipo non fissa soltanto quanti byte occupa un dato, ma anche come si leggono i suoi bit: lo stesso byte è la lettera «A» per un char e il numero 65 per un int. Questa lezione completa i tipi di base con i caratteri e i booleani, e studia il passaggio da un tipo a un altro: le conversioni implicite, che il compilatore esegue senza che gli vengano chieste e che possono perdere informazione; la conversione esplicita con static_cast; e l’inizializzazione con le graffe, che rifiuta le perdite. Termina con le costanti, const e constexpr, che trasformano un’intenzione («questo valore non cambia») in una garanzia che il compilatore verifica, e con i letterali e auto, che decidono il tipo di un valore scritto nel codice sorgente.

Obiettivi di apprendimento

  1. Usare il codice numerico di un carattere per calcolare con esso, per esempio per ottenere il valore di una cifra letta come carattere.
  2. Prevedere il risultato di una conversione implicita tra interi, reali e booleani, e scrivere la conversione esplicita con static_cast.
  3. Spiegare perché l’inizializzazione con le graffe rifiuta le conversioni che perdono informazione, e che cosa fa GCC in ciascun caso.
  4. Dichiarare con const o constexpr ogni valore che non deve cambiare, e distinguere una parola chiave dall’altra.
  5. Dedurre il tipo di un letterale (5, 5u, 5.0, 5.0f, '5', "5") e quello che auto gli assegna.

Il tipo come interpretazione

La lezione Variabili e memoria ha presentato la variabile come una cella con nome, tipo e valore, e le lezioni Gli interi e la loro rappresentazione e I numeri in virgola mobile hanno mostrato che dentro la cella non ci sono numeri ma bit, e che il tipo dice come leggerli. Questa lezione porta quell’idea alla sua conseguenza: se il tipo è la regola di lettura, allora gli stessi bit significano cose diverse secondo il tipo con cui si leggono, e far passare un valore da un tipo a un altro, ciò che in C++ si chiama conversione, è cambiare regola. Alcune conversioni conservano il valore (l’intero 7 diventa il reale 7.0 senza perdere nulla); altre lo alterano (il reale 2.7 diventa l’intero 2). Ne segue la domanda che percorre la lezione: in ogni conversione, il valore si conserva, e chi lo verifica?