logo

Dátové typy C++

Všetky premenných použite typ údajov počas deklarácie na obmedzenie typu údajov, ktoré sa majú uložiť. Preto môžeme povedať, že dátové typy sa používajú na to, aby sme premenným informovali o type dát, ktoré môžu ukladať. Kedykoľvek je premenná definovaná v C++, kompilátor alokuje určitú pamäť pre túto premennú na základe dátového typu, s ktorým je deklarovaná. Každý typ údajov vyžaduje iné množstvo pamäte.

C++ podporuje širokú škálu dátových typov a programátor si môže vybrať dátový typ vhodný pre potreby aplikácie. Typy údajov určujú veľkosť a typy hodnôt, ktoré sa majú uložiť. Reprezentácia úložiska a strojové inštrukcie na manipuláciu s každým typom údajov sa však líšia od stroja k stroju, hoci inštrukcie C++ sú na všetkých strojoch identické.

C++ podporuje nasledujúce typy údajov:



  1. Primárny alebo Vstavaný alebo Základný dátový typ
  2. Odvodené dátové typy
  3. Používateľom definované typy údajov

Dátové typy v C++

Dátové typy v C++ sa delia hlavne na 3 typy:

1. Primitívne typy údajov : Tieto dátové typy sú vstavané alebo preddefinované dátové typy a používateľ ich môže priamo použiť na deklarovanie premenných. príklad: int, char, float, bool atď. Primitívne dátové typy dostupné v C++ sú:

  • Celé číslo
  • Charakter
  • Boolean
  • Plávajúca bodka
  • Dvojitý pohyblivý bod
  • Bezcenné alebo Void
  • Široký charakter

2. Odvodené typy údajov: Funkcia

  • Pole
  • Ukazovateľ
  • Odkaz
  • 3. Abstraktné alebo používateľom definované typy údajov : Trieda

  • Štruktúra

  • Trieda
  • únie
  • Trieda
  • Enumerácia
  • Typ údajov definovaný typom
  • Primitívne dátové typy

      Trieda
    • Celé číslo : Kľúčové slovo používané pre celočíselné dátové typy je int . Celé čísla zvyčajne vyžadujú 4 bajty pamäťového priestoru a pohybujú sa od -2147483648 do 2147483647.
    • Charakter : Typ údajov znak sa používa na ukladanie znakov. Kľúčové slovo použité pre typ údajov znaku je char . Znaky zvyčajne vyžadujú 1 bajt pamäte a rozsah od -128 do 127 alebo 0 až 255.
    • Boolean : Dátový typ Boolean sa používa na ukladanie boolovských alebo logických hodnôt. Booleovská premenná môže uložiť obe pravda alebo falošné . Kľúčové slovo použité pre typ údajov Boolean je bool .
    • Plávajúca bodka : Dátový typ s pohyblivou rádovou čiarkou sa používa na ukladanie hodnôt s pohyblivou rádovou čiarkou alebo desatinných hodnôt s jednoduchou presnosťou. Kľúčové slovo používané pre typ údajov s pohyblivou rádovou čiarkou je plavák . Pohyblivé premenné zvyčajne vyžadujú 4 bajty pamäťového priestoru.
    • Dvojitý pohyblivý bod : Dátový typ s dvojitou pohyblivou rádovou čiarkou sa používa na ukladanie hodnôt s pohyblivou rádovou čiarkou alebo desatinných hodnôt s dvojitou presnosťou. Kľúčové slovo používané pre typ údajov s dvojitou pohyblivou rádovou čiarkou je dvojitý . Dvojité premenné zvyčajne vyžadujú 8 bajtov pamäťového priestoru.
    • neplatné : Neplatné znamená bez akejkoľvek hodnoty. dátový typ void predstavuje bezhodnotovú entitu. Typ údajov void sa používa pre tie funkcie, ktoré nevracajú hodnotu.
    • Trieda
    • Široký charakter : Široký charakter dátový typ je tiež znakový dátový typ, ale tento dátový typ má väčšiu veľkosť ako normálny 8-bitový dátový typ. Reprezentovaný wchar_t . Vo všeobecnosti má dĺžku 2 alebo 4 bajty.
    • Operátor sizeof(): operátor sizeof(). sa používa na zistenie počtu bajtov obsadených premennou/údajovým typom v pamäti počítača.

    Príklad:

    int m, x[50];

    cout<

    cout<

    Veľkosť premenných sa môže líšiť od tých, ktoré sú uvedené v tabuľke vyššie, v závislosti od kompilátora a počítača, ktorý používate.

    C++




    // C++ Program to Demonstrate the correct size> // of various data types on your computer.> #include> using> namespace> std;> int> main()> {> >cout <<>'Size of char : '> <<>sizeof>(>char>) << endl;> >cout <<>'Size of int : '> <<>sizeof>(>int>) << endl;> >cout <<>'Size of long : '> <<>sizeof>(>long>) << endl;> >cout <<>'Size of float : '> <<>sizeof>(>float>) << endl;> >cout <<>'Size of double : '> <<>sizeof>(>double>) << endl;> >return> 0;> }>

    >

    >

    Výkon

    Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8>

    Časová zložitosť: O(1)

    Priestorová zložitosť: O(1)

    Modifikátory dátových typov

    Ako už názov napovedá, modifikátory údajových typov sa používajú so vstavanými typmi údajov na úpravu dĺžky údajov, ktoré môže konkrétny typ údajov obsahovať.

    Modifikátory v C++

    Modifikátory typu údajov dostupné v C++ sú:

    • Podpísané
    • Nepodpísané
    • Krátky
    • Dlhé

    Nasledujúca tabuľka sumarizuje upravenú veľkosť a rozsah vstavaných dátových typov v kombinácii s modifikátormi typu:

    Dátový typ

    Veľkosť (v bajtoch)

    Rozsah

    krátky int

    2

    -32 768 až 32 767

    unsigned short int

    2

    0 až 65 535

    unsigned int

    4

    0 až 4,294,967,295

    int

    4

    -2 147 483 648 až 2 147 483 647

    cout

    dlhá int

    4

    -2 147 483 648 až 2 147 483 647

    unsigned long int

    4

    0 až 4,294,967,295

    dlhá dlhá int

    8

    -(2^63) až (2^63)-1

    unsigned long long int

    8

    0 až 18 446 744 073 709 551 615

    podpísaný char

    1

    -128 až 127

    nepodpísaný char

    1

    0 až 255

    plavák

    4

    -3,4×10^38 až 3,4×10^38

    dvojitý

    8

    -1,7×10^308 až 1,7×10^308

    dlhý dvojitý

    12

    -1,1×10^4932 až 1,1×10^4932

    wchar_t

    2 alebo 4

    1 široký znak

    Poznámka : Vyššie uvedené hodnoty sa môžu líšiť od kompilátora k kompilátoru. Vo vyššie uvedenom príklade sme uvažovali 32-bitový GCC.
    Veľkosť všetkých typov údajov môžeme zobraziť pomocou operátora sizeof() a odovzdaním kľúčového slova typu údajov ako argumentu tejto funkcie, ako je uvedené nižšie:

    Ak chcete teraz získať rozsah typov údajov, pozrite si nasledujúcu tabuľku

    Poznámka: syntax hlavičkový súbor je definovaný na nájdenie rozsahu základných dátových typov. Modifikátory bez znamienka majú minimálnu hodnotu nula. Takže pre minimálnu hodnotu bez znamienka nie sú definované žiadne makro konštanty.

    Makro konštanty

    názov

    vyjadruje

    CHAR_MIN

    Minimálna hodnota pre objekt typu char

    CHAR_MAX

    Maximálna hodnota pre objekt typu char

    SCHAR_MIN

    Minimálna hodnota pre objekt typu Signed char

    SCHAR_MAX

    Maximálna hodnota pre objekt typu Signed char

    FLIGHT_MAX

    Maximálna hodnota pre objekt typu Unsigned char

    CHAR_BIT

    Počet bitov v objekte typu char

    MB_LEN_MAX

    Maximálny počet bajtov vo viacbajtovom znaku

    SHRT_MIN

    Minimálna hodnota pre objekt typu short int

    SHRT_MAX

    Maximálna hodnota pre objekt typu short int

    USHRT_MAX

    Maximálna hodnota pre objekt typu Unsigned short int

    INT_MIN

    Minimálna hodnota pre objekt typu int

    INT_MAX

    Maximálna hodnota pre objekt typu int

    UINT_MAX

    Maximálna hodnota pre objekt typu Unsigned int

    LONG_MIN

    Minimálna hodnota pre objekt typu long int

    LONG_MAX

    Maximálna hodnota pre objekt typu long int

    HEAD_MAX

    Maximálna hodnota pre objekt typu Unsigned long int

    SHIP_MIN

    Minimálna hodnota pre objekt typu long long int

    LLONG_MAX

    Maximálna hodnota pre objekt typu long long int

    ULLONG_MAX

    Maximálna hodnota pre objekt typu Unsigned long long int

    Skutočná hodnota závisí od konkrétneho systému a implementácie knižnice, ale musí odrážať limity týchto typov v cieľovej platforme. LLONG_MIN, LLONG_MAX a ULLONG_MAX sú definované pre knižnice vyhovujúce štandardu C z roku 1999 alebo novšiemu (ktorý zahŕňa iba štandard C++ od roku 2011: C++11).

    Program C++ na nájdenie rozsahu dátových typov pomocou konštánt makra

    Príklad:

    C++




    // C++ program to Demonstrate the sizes of data types> #include> #include> using> namespace> std;> int> main()> {> >cout <<>'Size of char : '> <<>sizeof>(>char>) <<>' byte'> ><< endl;> >cout <<>'char minimum value: '> << CHAR_MIN << endl;> >cout <<>'char maximum value: '> << CHAR_MAX << endl;> >cout <<>'Size of int : '> <<>sizeof>(>int>) <<>' bytes'> ><< endl;> >cout <<>'Size of short int : '> <<>sizeof>(>short> int>)> ><<>' bytes'> << endl;> >cout <<>'Size of long int : '> <<>sizeof>(>long> int>)> ><<>' bytes'> << endl;> >cout <<>'Size of signed long int : '> ><<>sizeof>(>signed> long> int>) <<>' bytes'> << endl;> >cout <<>'Size of unsigned long int : '> ><<>sizeof>(unsigned>long> int>) <<>' bytes'> << endl;> >cout <<>'Size of float : '> <<>sizeof>(>float>) <<>' bytes'> ><< endl;> >cout <<>'Size of double : '> <<>sizeof>(>double>)> ><<>' bytes'> << endl;> >cout <<>'Size of wchar_t : '> <<>sizeof>(>wchar_t>)> ><<>' bytes'> << endl;> >return> 0;> }>

    >

    >

    Výkon

    Size of char : 1 byte char minimum value: -128 char maximum value: 127 Size of int : 4 bytes Size of short int : 2 bytes Size of long int : 8 bytes Size of signed long int : 8 bytes Size of unsigned long int : 8 bytes Size of float : 4 bytes Size of double : 8 bytes Size of wchar_t : 4 bytes>

    Časová zložitosť: O(1)

    Priestorová zložitosť: O(1)

    C++




    #include> #include> using> namespace> std;> int> main() {> >// Integer data types> >int> a = 10;> >short> b = 20;> >long> c = 30;> >long> long> d = 40;> >cout <<>'Integer data types: '> << endl;> >cout <<>'int: '> << a << endl;> >cout <<>'short: '> << b << endl;> >cout <<>'long: '> << c << endl;> >cout <<>'long long: '> << d << endl;> > >// Floating-point data types> >float> e = 3.14f;> >double> f = 3.141592;> >long> double> g = 3.14159265358979L;> >cout <<>'Floating-point data types: '> << endl;> >cout <<>'float: '> << e << endl;> >cout <<>'double: '> << f << endl;> >cout <<>'long double: '> << g << endl;> > >// Character data types> >char> h =>'a'>;> >wchar_t> i = L>'b'>;> >char16_t j = u>'c'>;> >char32_t k = U>'d'>;> >cout <<>'Character data types: '> << endl;> >cout <<>'char: '> << h << endl;> >wcout <<>'wchar_t: '> << i << endl;> >cout <<>'char16_t: '> << j << endl;> >cout <<>'char32_t: '> << k << endl;> > >// Boolean data type> >bool> l =>true>;> >bool> m =>false>;> >cout <<>'Boolean data type: '> << endl;> >cout <<>'true: '> << l << endl;> >cout <<>'false: '> << m << endl;> > >// String data type> >string n =>'Hello, world!'>;> >cout <<>'String data type: '> << endl;> >cout << n << endl;> > >return> 0;> }>

    >

    >

    Výkon

    Integer data types: int: 10 short: 20 long: 30 long long: 40 Floating-point data types: float: 3.14 double: 3.14159 long double: 3.14159 Character data types: char: a wchar_t: b char16_t: 99 char32_t: 100 Boolean data type: true: 1 false: 0 String data type: Hello, world!>

    Tento program deklaruje premenné rôznych dátových typov, priraďuje im hodnoty a následne ich hodnoty vytlačí.

    Typy celočíselných údajov zahŕňajú int, short, long a long long. Tieto typy údajov predstavujú celé čísla rôznych veľkostí.

    Typy údajov s pohyblivou rádovou čiarkou zahŕňajú float, double a long double. Tieto typy údajov predstavujú reálne čísla s rôznou úrovňou presnosti.

    Typy údajov znakov zahŕňajú char, wchar_t, char16_t a char32_t. Tieto dátové typy predstavujú jednotlivé znaky rôznej veľkosti.

    Booleovský dátový typ je jednoduchý dátový typ, ktorý môže mať iba jednu z dvoch hodnôt: true alebo false.

    Dátový typ reťazca je postupnosť znakov. V tomto programe používame triedu string na deklarovanie reťazcovej premennej a priraďujeme jej hodnotu.

    Výhody :

    Typy údajov poskytujú spôsob, ako kategorizovať a organizovať údaje v programe, čo uľahčuje pochopenie a správu.
    Každý typ údajov má špecifický rozsah hodnôt, ktoré môže obsahovať, čo umožňuje presnejšiu kontrolu nad typom ukladaných údajov.
    Dátové typy pomáhajú predchádzať chybám a chybám v programe presadzovaním prísnych pravidiel o tom, ako možno údaje používať a manipulovať s nimi.
    C++ poskytuje širokú škálu dátových typov, čo umožňuje vývojárom vybrať si najlepší typ pre konkrétnu úlohu.

    Nevýhody :

    Použitie nesprávneho typu údajov môže viesť k neočakávanému správaniu a chybám v programe.
    Niektoré typy údajov, ako napríklad polia typu long double alebo char, môžu pri nadmernom používaní zaberať veľké množstvo pamäte a ovplyvniť výkon.
    Komplexný typový systém C++ môže začiatočníkom sťažiť učenie a efektívne používanie jazyka.
    Použitie dátových typov môže pridať ďalšiu zložitosť a podrobnosť programu, čo sťažuje jeho čítanie a pochopenie.