Conversione di tipi in C++
Un cast di tipo è fondamentalmente una conversione da un tipo a un altro. Esistono due tipi di conversione di tipo:
- Conversione implicita del tipo Nota anche come 'conversione automatica del tipo'.
- Eseguito autonomamente dal compilatore, senza alcun trigger esterno da parte dell'utente.
- Generalmente avviene quando in un'espressione è presente più di un tipo di dato. In tale condizione avviene la conversione del tipo (promozione del tipo) per evitare la perdita di dati.
- Tutti i tipi di dati delle variabili vengono aggiornati al tipo di dati della variabile con il tipo di dati più grande.
bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double
- È possibile che le conversioni implicite perdano informazioni, i segni possano andare perduti (quando Signed viene convertito implicitamente in Unsigned) e si può verificare un overflow (quando Long Long viene implicitamente convertito in float).
- Conversione per assegnazione: Questo viene fatto definendo esplicitamente il tipo richiesto davanti all'espressione tra parentesi. Questo può anche essere considerato un lancio forzato.
Sintassi:
(type) expression
Dove tipo indica il tipo di dati in cui viene convertito il risultato finale.
Esempio:
// C++ program to demonstrate>// explicit type casting>>#include>using>namespace>std;>>int>main()>{>>double>x = 1.2;>>>// Explicit conversion from double to int>>int>sum = (>int>)x + 1;>>>cout < <>'Sum = '>< < sum;>>>return>0;>}>
Produzione:Sum = 2
- Conversione utilizzando l'operatore Cast: Un operatore Cast è un operatore unario che forza la conversione di un tipo di dati in un altro tipo di dati.
C++ supporta quattro tipi di casting:- Cast statico
- Cast dinamico
- Cast costante
- Reinterpretare il cast
Esempio:
#include>using>namespace>std;>int>main()>{>>float>f = 3.5;>>>// using cast operator>>int>b =>static_cast><>int>>(F);>>>cout < < b;>}>
Produzione:3
Esempio di conversione implicita del tipo:
// An example of implicit conversion> > #include> using> namespace> std;> > int> main()> {> > int> x = 10;> // integer x> > char> y => 'a'> ;> // character c> > > // y implicitly converted to int. ASCII> > // value of 'a' is 97> > x = x + y;> > > // x is implicitly converted to float> > float> z = x + 1.0;> > > cout < <> 'x = '> < < x < < endl> > < <> 'y = '> < < y < < endl> > < <> 'z = '> < < z < < endl;> > > return> 0;> }> |
Produzione:
x = 107 y = a z = 108Conversione esplicita del tipo: questo processo è anche chiamato cast del tipo ed è definito dall'utente. Qui l'utente può digitare il risultato per renderlo di un particolare tipo di dati.
In C++, può essere fatto in due modi:
Vantaggi della conversione del tipo:
- Questo viene fatto per sfruttare alcune funzionalità delle gerarchie di tipi o delle rappresentazioni di tipi.
- Aiuta a calcolare espressioni contenenti variabili di diversi tipi di dati.