Questo articolo parla del casting in C++, ovvero della converione di tipo di una variabile. Una conversione di tipo è un'operazione volta a trasformare un valore di un certo tipo in un valore di un altro tipo.
Questa operazione è comune in tutti i linguaggi.
Quando in un'espressione si utilizzano tipi di dati diversi può nascere il problema della conversione di tipo, che chiaramente non c'è per dati dello stesso tipo.
La conversione che viene eseguita dal compilatore stesso viene chiamata implicita, mentre la conversione decisa dal programmatore viene chiamata esplicita.
Facciamo subito degli esempi per capire il concetto.
Esempi di casting in C++
Casting implicito
Le conversioni implicite non richiedono nessun operatore per essere eseguite, ma sono eseguite in automatico.
Fondamenti solidi di programmazione
Impara le basi della programmazione in C in modo semplice, pratico ed efficace. Variabili, cicli, funzioni, logica e algoritmi.
⏱️9 ore di corso registrato
🧩Più di 50 algoritmi risolti passo passo
🎯Livello base
💻100% online, fruibile quando vuoi
#include <iostream>
using namespace std;
int main() {
int x = 8, y = 3;
float divisione;
// dividendo due interi si perde la precisione
divisione = x / y;
cout << "La divisione e': " << divisione << endl;
return 0;
}
Questo programma darà come risultato 2 anzichè 2,67.
x / y → entrambi sono int.
La divisione intera viene eseguita prima di qualsiasi assegnazione.
Il risultato è 2, intero, e la parte frazionaria viene persa.
Assegnazione a divisione → qui entra in gioco il casting implicito da int a float.
L’intero 2 viene convertito in 2.0.
Se avessimo questa situazione:
int x = 8; float y = 3; float divisione;
divisione = x / y;
Si avrebbe:
x / y → x è un int, y è un float.
Quando si esegue l’operazione, il compilatore fa un casting implicito di x da int a float.
Ora la divisione diventa 8.0 / 3.0.
La divisione viene quindi eseguita in virgola mobile, restituendo 2.66667.
Il risultato viene assegnato a divisione (float), quindi non c’è perdita di precisione.
Facciamo un altro esempio di casting in C++:
#include <iostream>
using namespace std;
int main() {
int base, altezza;
float area;
cout << "Calcoliamo l'area del triangolo, inserisci la base: ";
cin >> base;
cout << "Adesso inserisci l'altezza: ";
cin >> altezza;
area = base * altezza / 2.0; // divisione in float
cout << "L'area e': " << area;
return 0;
}
In questo esempio prendiamo la base e l'altezza di tipo intero e poi le utilizziamo per calcolare l'area che però è di tipo float. Anche qui si ha una perdita di precisione.
Se inseriamo ad esempio i valori: base = 5 e altezza = 3 otterremo area = 7.
Casting esplicito
Continuiamo a parlare del casting in C++ introducendo il concetto di casting esplicito.
Nel casting esplicito l'operatore di cast è rappresentato in questo modo:
b=float(a); //notazione C++
mentre è comunque supportata:
b=(float)a; //vecchia notazione C
📚 Consigliato per te
50 Algoritmi per imparare C++
Struttura dati, puntatori e algoritmi classici in C++, passo passo.
Un'email ogni tanto con i nuovi articoli e le guide — niente spam, ti disiscrivi quando vuoi.
🍪 Questo sito usa i cookie
Utilizziamo cookie tecnici necessari al funzionamento e, previo tuo consenso, cookie
analitici e di terze parti per migliorare l'esperienza di navigazione.
Leggi la Cookie Policy e la
Privacy Policy.