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
- Usare il codice numerico di un carattere per calcolare con esso, per esempio per ottenere il valore di una cifra letta come carattere.
- Prevedere il risultato di una conversione implicita tra interi, reali e booleani, e scrivere la conversione esplicita con
static_cast. - Spiegare perché l’inizializzazione con le graffe rifiuta le conversioni che perdono informazione, e che cosa fa GCC in ciascun caso.
- Dichiarare con
constoconstexprogni valore che non deve cambiare, e distinguere una parola chiave dall’altra. - Dedurre il tipo di un letterale (
5,5u,5.0,5.0f,'5',"5") e quello cheautogli 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?
Caricamento del contenuto…