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).

    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 = 108 
    Conversione 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:

    • 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:

      1. Cast statico
      2. Cast dinamico
      3. Cast costante
      4. Reinterpretare il cast
        1. Esempio:




          #include> using> namespace> std;> int> main()> {> > float> f = 3.5;> > > // using cast operator> > int> b => static_cast> <> int> >(F);> > > cout < < b;> }>

          Produzione:

           3 

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.