C++: il casting

David Hettinger

Per casting si intende un’operazione volta a trasformare un valore di un certo tipo in un valore di un altro tipo.

Ad esempio il seguente programma fa sì che una variabile di tipo float venga salvata in una variabile di tipo int.

#include<iostream>
using namespace std;
int main()
{
int a=5;
float b=3.56;
a=b;
cout<<a;
return 0;
}

Il casting è l’azione che consente di trasformare la rappresentazione di un dato dal suo tipo originale a un altro.

La sintassi per il cambio di tipo è la seguente:

(tipo) espressione;

ad esempio

b = (int) a;

oppure in alcune versioni più recenti:

b= static_cast <int> (a);

eccone l’applicazione:

#include<iostream>
using namespace std;
int main()
{
/*****************************************/
/* conversione implicita */
/*****************************************/
int a=5;
int d,e;
float b=3.56;
a=b;
cout<<a<<endl;
/******************************************/
/* primo esempio di conversione esplicita */
/******************************************/
cout<<“Altro esempio”<<endl;
d=(int)b;
cout<<d<<endl;
/*******************************************/
/* secondo esempio di conversione esplicita */
/******************************************/
cout<<“altro esempio con la funzione static_cast”<<endl;
e=static_cast<int>(b);
cout<<e;
return 0;
}

Tale conversione comincia a diventare molto importante quando si eseguono delle divisioni tra interi e bisogna tener conto se la divisione fornisce ancora un intero o un numero decimale di cui poi tenere conto nel proseguo del programma stesso.

Ad esempio in questo programma che differenza intercorre tra la prima parte del programma e la seconda?

 

#include<iostream>
using namespace std;
int main()
{
int a,b;
float c;
cout<<“Inserisci il primo numero intero\n”;
cin>>a;
cout<<“Inserisci il secondo numero intero\n”;
cin>>b;
cout<<“Nessun casting: “<<a/b<<endl;
c=(float)a/b;
cout<<“Casting: “<<c;
return 0;
}

Questa voce è stata pubblicata in Senza categoria. Contrassegna il permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *