Il casting nel linguaggio C++
Il linguaggio C++ è fortemente tipizzato. Questo vuol dire che una volta assegnato un tipo di dato a una variabile, non può essere modificato nel corso del programma.
Puoi però convertire il valore contenuto in una variabile in un altro tipo tramite un'operazione di casting e assegnarlo a una nuova variabile.
Nel linguaggio C++ il casting del tipo di dato può avvenire in modo implicito e in moto esplcito.
Il casting è la conversione da tipo di dato ad un altro. Ad esempio, dal tipo int (intero) al tipo float (virgola mobile).
Il casting implicito
In alcuni casi la conversione tra un tipo di dato e un altro avviene automaticamente nel linguaggio C++. E' detto casting implicito.
Questo accade quando due tipi di dati sono tra loro compatibili.
Ad esempio, la variabile alfa è intera mentre la variabile beta è in virgola mobile.
int alfa = 1
float beta = alfa
L'assegnazione di alfa alla variabile beta, converte automaticamente il tipo di dato da integer a float.
In questo caso non occorre nessuna operazione di casting.
Il linguaggio C++ converte automaticamente il dato nel tipo in grado di memorizzare un valore più esteso.
Il casting esplicito
Il casting esplicito è una conversione da un tipo di dato a un altro indicata dal programmatore.
Esistono due notazioni per fare il casting esplicito
float x = 1.0;
int y, z;
b = (int)x;
c = int(x);
La conversione (int)x è detta notazione tradizionale mentre la notazione int(x) è detta notazione funzionale.
Ad esempio, per calcolare la divisione tra due variabili intere devi trasformarle in valori decimali.
- #include <iostream>
- using namespace std;
- int main(void) {
- int a=5, b=2;
- float c;
- c = float(a)/float(b);
- cout<<c;
- }
Il risultato è 2.5
2.5
Viceversa, se effettui la divisione con l'istruzione c=a/b il linguaggio C++ effettua la divisione intera, anche se la variabile c è di tipo float, perché la divisione avviene tra due variabili di tipo int.
- #include <iostream>
- using namespace std;
- int main(void) {
- int a=5, b=2;
- float c;
- c = a/b;
- cout<<c;
- }
In questo caso il risultato è 2
2
Nel caso in cui almeno uno dei due operandi è di tipo float, il linguaggio C++ converte l'altro operando nel tipo float e il risultato della divisione è di tipo float.
- #include <iostream>
- using namespace std;
- int main(void) {
- int a=5, b=2;
- float c;
- c = a/float(b);
- cout<<c;
- }
In questo caso il risultato è 2.5
2.5