logo

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:


      dereferenčný ukazovateľ



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