← Programmazione
C++ · Variabili

Variabili, Costanti e Tipi

I tipi fondamentali del C++, come dichiarare e inizializzare variabili, l'uso di const e gli operatori aritmetici. Con tool interattivo per esplorare range e validare valori.

🎓 3° anno ITIS/SIA 🔧 Tool interattivo ⏰ ~30 min
int eta = 18 ; float media = 8.5f ; const int MAX = 100 ;

Tipi fondamentali

In C++ ogni variabile ha un tipo dichiarato esplicitamente. Il tipo determina quanta memoria viene riservata e quali valori la variabile può contenere. I tipi che userai nella pratica quotidiana sono sei.

TipoByteCosa contieneEsempio
int4 Numeri interi (positivi e negativi) int voti = 7;
float4 Numeri decimali, precisione singola (~7 cifre) float media = 8.5f;
double8 Numeri decimali, precisione doppia (~15 cifre) double pi = 3.14159265;
char1 Un singolo carattere ASCII char lettera = 'A';
bool1 Valore logico: true o false bool attivo = true;
stringvariabile Sequenza di caratteri (testo) string nome = "Mario";
📌 float o double?

Usa double quando la precisione conta (calcoli scientifici, finanziari). Usa float quando la memoria è limitata (es. array grandi di valori decimali). Per la maggior parte degli esercizi scolastici, float è sufficiente — ricorda il suffisso f: 8.5f.

Dichiarazione e inizializzazione

Dichiarare una variabile significa creare uno spazio in memoria con un nome e un tipo. Inizializzare significa assegnarle subito un valore. Le due operazioni possono avvenire insieme o separatamente.

C++ · dichiarazione
// dichiarazione: riserva memoria (valore iniziale indeterminato)
int eta;

// inizializzazione contestuale: dichiarazione + valore in una riga
int eta = 18;
float media = 8.5f;
double pi    = 3.14159265;
char lettera  = 'A';      // char usa apici singoli, NON doppi
bool attivo   = true;
string nome   = "Mario";  // string usa apici doppi

// assegnazione dopo la dichiarazione
int x;
x = 42;   // valido, ma x aveva valore indefinito prima di questa riga
⚠ Variabile non inizializzata

In C++ una variabile locale non inizializzata contiene un valore casuale — qualunque cosa fosse in memoria in quel momento. Usarla prima di assegnarle un valore è un bug difficile da trovare. Buona regola: inizializza sempre.

Nomi di variabile — regole

C++ · nomi validi e non
// ✅ validi
int eta;          // lettere minuscole
int etaStudente;  // camelCase — convenzione comune
int eta_studente; // snake_case — alternativa
int _x;           // underscore iniziale: valido (ma evitare)

// ❌ non validi
int 2eta;      // inizia con cifra
int eta studente; // spazio nel nome
int int;     // parola chiave riservata

Costanti — const

Una costante è una variabile il cui valore non può essere modificato dopo l'inizializzazione. Si dichiara con la parola chiave const prima del tipo. Se provi a modificarla, il compilatore segnala un errore.

C++ · const
const int    MAX_STUDENTI = 30;   // numero massimo di studenti in classe
const float  IVA          = 0.22f; // aliquota IVA — non cambia a runtime
const string SCUOLA       = "ITIS";

MAX_STUDENTI = 35;  // ❌ errore di compilazione: assignment of read-only variable
💡 Convenzione: MAIUSCOLO per le costanti

Non è obbligatorio, ma scrivere le costanti in maiuscolo (MAX_STUDENTI, IVA) è una convenzione diffusa che le distingue visivamente dalle variabili. Usala sempre per rendere il codice più leggibile.

Operatori aritmetici e casting

Operatori aritmetici

C++ · operatori
int a = 10, b = 3;

a + b   // 13  — addizione
a - b   // 7   — sottrazione
a * b   // 30  — moltiplicazione
a / b   // 3   — divisione INTERA (int/int = int, il resto viene scartato)
a % b   // 1   — modulo (resto della divisione intera)

// operatori di assegnazione composta
a += 5;  // equivale a: a = a + 5
a -= 2;  // equivale a: a = a - 2
a++;    // incremento: a = a + 1
a--;    // decremento: a = a - 1
⚠ Divisione tra interi

10 / 3 in C++ restituisce 3, non 3.333.... Quando si dividono due int, il risultato è sempre un intero (troncato verso zero). Per ottenere un risultato decimale almeno uno dei due operandi deve essere float o double.

Casting esplicito

Il casting converte un valore da un tipo a un altro. Il modo C++ moderno usa la sintassi static_cast<tipo>(valore).

C++ · casting
int a = 10, b = 3;

// senza cast: divisione intera
double ris1 = a / b;                   // 3.0 — il cast avviene DOPO la divisione intera

// con static_cast: divisione reale
double ris2 = static_cast<double>(a) / b;  // 3.333... — a diventa double PRIMA della divisione

// cast da double a int: troncamento (NON arrotondamento)
int troncato = static_cast<int>(3.99);  // 3, non 4

🔧 Esplora i tipi

Seleziona un tipo per vederne dimensione, range e dichiarazione di default. Poi inserisci un valore per verificare se è compatibile.

🔧 Esploratore dei Tipi Seleziona · Esplora · Valida
Dimensione
Valore minimo
Valore massimo
Dichiarazione con valore di default

Inserisci un valore e verifica se il tipo selezionato può contenerlo:

Seleziona un tipo e inserisci un valore.
Tipo selezionato: int