logo

C++ duomenų tipai

Visi kintamieji deklaruodami naudokite duomenų tipą, kad apribotumėte saugomų duomenų tipą. Todėl galime sakyti, kad duomenų tipai naudojami kintamiesiems nurodyti, kokio tipo duomenis jie gali saugoti. Kai kintamasis apibrėžiamas C++, kompiliatorius tam kintamajam skiria šiek tiek atminties pagal duomenų tipą, su kuriuo jis deklaruojamas. Kiekvienam duomenų tipui reikalingas skirtingas atminties kiekis.

C++ palaiko daugybę duomenų tipų, o programuotojas gali pasirinkti duomenų tipą, atitinkantį programos poreikius. Duomenų tipai nurodo saugomų reikšmių dydį ir tipus. Tačiau saugyklos vaizdavimas ir mašinos instrukcijos, skirtos valdyti kiekvieną duomenų tipą, įvairiose mašinose skiriasi, nors C++ instrukcijos visuose įrenginiuose yra vienodos.

C++ palaiko šiuos duomenų tipus:



  1. Pirminis arba Įmontuotas arba Pagrindinis duomenų tipas
  2. Išvestiniai duomenų tipai
  3. Vartotojo nustatyti duomenų tipai

Duomenų tipai C++

C++ duomenų tipai daugiausia skirstomi į 3 tipus:

1. Primityvūs duomenų tipai : Šie duomenų tipai yra integruoti arba iš anksto nustatyti duomenų tipai, kuriuos vartotojas gali naudoti tiesiogiai deklaruodamas kintamuosius. pavyzdys: int, char, float, bool ir tt Primityvūs C++ duomenų tipai yra:

  • Sveikasis skaičius
  • Charakteris
  • Būlio
  • Slankusis taškas
  • Dvigubas slankusis kablelis
  • Bevertis arba tuščias
  • Platus charakteris

2. Išvestiniai duomenų tipai: Funkcija

  • Masyvas
  • Rodyklė
  • Nuoroda
  • 3. Abstraktūs arba vartotojo nustatyti duomenų tipai : Klasė

  • Struktūra

  • Klasė
  • sąjunga
  • Klasė
  • Surašymas
  • Typedef apibrėžtas duomenų tipas
  • Primityvūs duomenų tipai

      Klasė
    • Sveikasis skaičius : sveikųjų skaičių duomenų tipams naudojamas raktinis žodis yra tarpt . Sveikiesiems skaičiams paprastai reikia 4 baitų atminties ir svyruoja nuo -2147483648 iki 2147483647.
    • Charakteris : simbolių duomenų tipas naudojamas simboliams saugoti. Simbolių duomenų tipui naudojamas raktinis žodis yra char . Simboliams paprastai reikia 1 baito atminties ir svyruoja nuo -128 iki 127 arba 0 iki 255.
    • Būlio : Būlio duomenų tipas naudojamas loginėms arba loginėms reikšmėms saugoti. Būlio kintamasis gali saugoti bet kurį tiesa arba klaidinga . Būlio duomenų tipui naudojamas raktinis žodis yra bool .
    • Slankusis taškas : Slankaus kablelio duomenų tipas naudojamas vieno tikslumo slankiojo kablelio reikšmėms arba dešimtainėms reikšmėms saugoti. Slankaus kablelio duomenų tipui naudojamas raktinis žodis yra plūdė . Slankiųjų kintamiesiems paprastai reikia 4 baitų atminties.
    • Dvigubas slankusis kablelis : Dvigubo slankaus kablelio duomenų tipas naudojamas dvigubo tikslumo slankiojo kablelio reikšmėms arba dešimtainėms reikšmėms saugoti. Dvigubo slankiojo kablelio duomenų tipui naudojamas raktinis žodis yra dvigubai . Dvigubi kintamieji paprastai reikalauja 8 baitų atminties.
    • tuštuma : Tuščia reiškia be jokios reikšmės. galiojantis duomenų tipas reiškia bevertį objektą. Tuščiųjų duomenų tipas naudojamas toms funkcijoms, kurios negrąžina reikšmės.
    • Klasė
    • Platus charakteris : Platus charakteris duomenų tipas taip pat yra simbolių duomenų tipas, tačiau šio tipo duomenų dydis yra didesnis nei įprasto 8 bitų duomenų tipo. Atstovauja wchar_t . Paprastai tai yra 2 arba 4 baitai.
    • sizeof() operatorius: dydis() operatorius naudojamas norint rasti baitų skaičių, kurį kompiuterio atmintyje užima kintamasis/duomenų tipas.

    Pavyzdys:

    int m , x[50];

    cout<

    cout<

    Kintamųjų dydis gali skirtis nuo nurodytų aukščiau esančioje lentelėje, atsižvelgiant į kompiliatorių ir naudojamą kompiuterį.

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

    >

    >

    Išvestis

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

    Laiko sudėtingumas: O(1)

    Erdvės sudėtingumas: O(1)

    Duomenų tipų modifikatoriai

    Kaip rodo pavadinimas, duomenų tipo modifikatoriai naudojami su įtaisytaisiais duomenų tipais, kad būtų galima pakeisti duomenų, kuriuos gali turėti tam tikras duomenų tipas, ilgį.

    Modifikatoriai C++

    C++ galimi duomenų tipo modifikatoriai:

    • Pasirašyta
    • Nepasirašytas
    • Trumpas
    • Ilgai

    Toliau pateiktoje lentelėje apibendrinamas pakeistas integruotų duomenų tipų dydis ir diapazonas, kai jie derinami su tipo modifikatoriais:

    Duomenų tipas

    Dydis (baitais)

    diapazonas

    trumpas tarpt

    2

    -32 768–32 767

    nepasirašytas trumpas tarpt

    2

    nuo 0 iki 65 535

    nepasirašytas tarpt

    4

    nuo 0 iki 4 294 967 295

    tarpt

    4

    -2 147 483 648–2 147 483 647

    python generuoti uuid

    ilgas tarpt

    4

    -2 147 483 648–2 147 483 647

    nepasirašytas ilgas tarpt

    4

    nuo 0 iki 4 294 967 295

    ilgas ilgas tarpt

    8

    -(2^63) iki (2^63)-1

    nepasirašytas ilgas ilgas tarpt

    8

    nuo 0 iki 18 446 744 073 709 551 615

    pasirašytas char

    1

    -128-127

    nepasirašytas char

    1

    nuo 0 iki 255

    plūdė

    4

    -3,4 × 10^38 iki 3,4 × 10^38

    dvigubai

    8

    -1,7 × 10^308 iki 1,7 × 10^308

    ilgas dvigubas

    12

    -1,1 × 10^4932 iki 1,1 × 10^4932

    wchar_t

    2 arba 4

    1 platus simbolis

    Pastaba : aukščiau pateiktos reikšmės gali skirtis priklausomai nuo kompiliatoriaus. Aukščiau pateiktame pavyzdyje mes atsižvelgėme į GCC 32 bitų.
    Galime parodyti visų duomenų tipų dydį naudodami operatorių sizeof() ir perduodant duomenų tipo raktinį žodį kaip argumentą šiai funkcijai, kaip parodyta toliau:

    Norėdami sužinoti duomenų tipų diapazoną, žr. šią diagramą

    Pastaba: sintaksė antraštės failas yra apibrėžtas, kad būtų galima rasti pagrindinių duomenų tipų diapazoną. Nepaženklintų modifikatorių minimali reikšmė yra nulis. Taigi beženklei minimaliai reikšmei makrokonstantos neapibrėžtos.

    Makrokonstantos

    vardas

    Išreiškia

    CHAR_MIN

    Minimali char tipo objekto reikšmė

    CHAR_MAX

    Didžiausia char tipo objekto vertė

    SCHAR_MIN

    Mažiausia objekto vertė, kurios tipas Signed char

    SCHAR_MAX

    Didžiausia objekto vertė, kurios tipas Signed char

    FLIGHT_MAX

    Didžiausia objekto vertė Unsigned char

    CHAR_BIT

    Bitų skaičius char objekte

    MB_LEN_MAX

    Didžiausias kelių baitų simbolio baitų skaičius

    SHRT_MIN

    Minimali trumpojo int tipo objekto reikšmė

    SHRT_MAX

    Didžiausia trumpojo int tipo objekto vertė

    USHRT_MAX

    Didžiausia Unsigned tipo objekto reikšmė trumpas int

    INT_MIN

    Minimali int tipo objekto reikšmė

    INT_MAX

    Maksimali int tipo objekto vertė

    UINT_MAX

    Didžiausia objekto vertė Unsigned int

    LONG_MIN

    Minimali ilgio int tipo objekto vertė

    LONG_MAX

    Didžiausia objekto vertė, kurios tipas yra long int

    HEAD_MAX

    Didžiausia Unsigned tipo objekto vertė long int

    SHIP_MIN

    Mažiausia objekto vertė long long int

    LLONG_MAX

    Didžiausia objekto vertė, kurios tipas yra long long int

    ULLONG_MAX

    Didžiausia Unsigned tipo objekto vertė long long int

    Tikroji vertė priklauso nuo konkrečios sistemos ir bibliotekos įgyvendinimo, tačiau turi atspindėti šių tipų ribas tikslinėje platformoje. LLONG_MIN, LLONG_MAX ir ULLONG_MAX yra apibrėžti bibliotekoms, atitinkančioms 1999 m. ar naujesnį C standartą (į kurį įtrauktas tik C++ standartas nuo 2011 m.: C++11).

    C++ programa, skirta duomenų tipų diapazonui rasti naudojant makrokonstantas

    Pavyzdys:

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

    >

    >

    Išvestis

    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>

    Laiko sudėtingumas: O(1)

    Erdvės sudėtingumas: 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;> }>

    >

    >

    Išvestis

    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!>

    Ši programa deklaruoja įvairių duomenų tipų kintamuosius, priskiria jiems reikšmes ir išspausdina jų reikšmes.

    Sveikųjų skaičių duomenų tipai apima int, short, long ir long long. Šie duomenų tipai reiškia sveikus įvairaus dydžio skaičius.

    Slankaus kablelio duomenų tipai apima slankiojo, dvigubo ir ilgojo dvigubo. Šie duomenų tipai rodo realius skaičius, kurių tikslumas skiriasi.

    Simbolių duomenų tipai apima char, wchar_t, char16_t ir char32_t. Šie duomenų tipai reiškia atskirus įvairaus dydžio simbolius.

    Būlio duomenų tipas yra paprastas duomenų tipas, kuris gali turėti tik vieną iš dviejų reikšmių: true arba false.

    Eilutės duomenų tipas yra simbolių seka. Šioje programoje mes naudojame eilutės klasę, kad deklaruotume eilutės kintamąjį ir priskirtume jam reikšmę.

    Privalumai :

    Duomenų tipai suteikia galimybę suskirstyti ir tvarkyti duomenis programoje, kad būtų lengviau suprasti ir valdyti.
    Kiekvienas duomenų tipas turi tam tikrą reikšmių diapazoną, kurį jis gali turėti, todėl galima tiksliau valdyti saugomų duomenų tipą.
    Duomenų tipai padeda išvengti klaidų ir klaidų programoje, nes nustato griežtas duomenų naudojimo ir manipuliavimo taisykles.
    C++ siūlo platų duomenų tipų asortimentą, leidžiantį kūrėjams pasirinkti geriausią tipą konkrečiai užduočiai atlikti.

    Trūkumai :

    Netinkamo tipo duomenų naudojimas gali sukelti netikėtą programos veikimą ir klaidas.
    Kai kurie duomenų tipai, pvz., ilgi dvigubai arba simbolių masyvai, gali užimti daug atminties ir turėti įtakos našumui, jei naudojami per daug.
    Dėl sudėtingo C++ tipo sistemos pradedantiesiems gali būti sunku išmokti ir efektyviai vartoti kalbą.
    Duomenų tipų naudojimas gali suteikti programai papildomo sudėtingumo ir išsamumo, todėl ją bus sunkiau skaityti ir suprasti.