logo

Skriv Konvertering i C++

En typgjutning är i grunden en omvandling från en typ till en annan. Det finns två typer av typkonvertering:

    Implicit typkonvertering Även känd som 'automatisk typkonvertering'.
    • Görs av kompilatorn på egen hand, utan någon extern trigger från användaren.
    • Utspelar sig vanligtvis när det finns mer än en datatyp i ett uttryck. I ett sådant tillstånd sker typkonvertering (typpromotion) för att undvika förlust av data.
    • Alla datatyper för variablerna uppgraderas till datatypen för variabeln med störst datatyp.
       bool ->char -> kort int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double>
    • Det är möjligt för implicita omvandlingar att förlora information, tecken kan gå förlorade (när signerad konverteras implicit till osignerad) och spill kan inträffa (när long long implicit omvandlas till float).

    Exempel på typimplicit konvertering:








    // 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;> }>



    >

    >

    Produktion:

     x = 107 y = a z = 108>
    Explicit typkonvertering: Denna process kallas även typgjutning och den är användardefinierad. Här kan användaren typcasta resultatet för att göra det till en viss datatyp.

    I C++ kan det göras på två sätt:

    • Konvertera efter uppdrag: Detta görs genom att uttryckligen definiera den önskade typen framför uttrycket inom parentes. Detta kan också betraktas som kraftfull gjutning.

      Syntax:

      (type) expression>

      var typ anger vilken datatyp som slutresultatet konverteras till.

      Exempel:




      python chr-funktion

      // 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;> }>

      >

      >

      Produktion:

       Sum = 2>
    • Konvertering med Cast-operator: En Cast-operatör är en unär operatör vilket tvingar en datatyp att konverteras till en annan datatyp.
      C++ stöder fyra typer av gjutning:

      1. Statisk gjutning
      2. Dynamisk cast
      3. Const Cast
      4. Omtolka Cast
        1. Exempel:

          fibonacci-serien i java




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

          >

          >

          Produktion:

           3>

Fördelar med typkonvertering:

  • Detta görs för att dra fördel av vissa egenskaper hos typhierarkier eller typrepresentationer.
  • Det hjälper till att beräkna uttryck som innehåller variabler av olika datatyper.