Zadajte konverziu v C++

Typové obsadenie je v podstate konverzia z jedného typu na druhý. Existujú dva typy konverzie typu:

    Implicitná konverzia typu Tiež známa ako „automatická konverzia typu“.
    • Vykonáva kompilátor samostatne, bez akéhokoľvek externého spúšťača od používateľa.
    • Vo všeobecnosti sa vyskytuje, keď je vo výraze prítomný viac ako jeden typ údajov. V takom stave prebieha konverzia typu (propagácia typu), aby sa predišlo strate údajov.
    • Všetky typy údajov premenných sa upgradujú na typ údajov premennej s najväčším typom údajov.
       bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double 
    • Je možné, že pri implicitných konverziách sa stratia informácie, môžu sa stratiť znaky (keď sa podpísané implicitne skonvertuje na nepodpísané) a môže dôjsť k pretečeniu (keď sa long long implicitne skonvertuje na float).

    Príklad implicitnej konverzie typu:




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

    Výkon:

     x = 107 y = a z = 108 
    Explicitná konverzia typu: Tento proces sa tiež nazýva pretypovanie a je definovaný používateľom. Tu môže používateľ pretypovať výsledok, aby z neho vytvoril konkrétny dátový typ.

    V C++ sa to dá urobiť dvoma spôsobmi:

    • Konverzia podľa zadania: To sa dosiahne explicitným definovaním požadovaného typu pred výrazom v zátvorkách. Toto možno považovať aj za násilné vrhanie.

      Syntax:

      (type) expression 

      kde typu označuje typ údajov, na ktorý sa konvertuje konečný výsledok.

      Príklad:




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

      Výkon:

       Sum = 2 
    • Konverzia pomocou operátora Cast: Operátor Cast je an unárny operátor ktorý núti jeden dátový typ konvertovať na iný dátový typ.
      C++ podporuje štyri typy castingu:

      1. Statické prenášanie
      2. Dynamické obsadenie
      3. Const Cast
      4. Reinterpretovať Cast
        1. Príklad:




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

          Výkon:

           3 

Výhody typovej konverzie:

  • Robí sa to s cieľom využiť určité vlastnosti typových hierarchií alebo reprezentácií typov.
  • Pomáha počítať výrazy obsahujúce premenné rôznych dátových typov.