logo

C++ datové typy

Všechno proměnné použijte datový typ během deklarace k omezení typu dat, která mají být uložena. Proto můžeme říci, že datové typy se používají k tomu, aby proměnným sdělily, jaký typ dat mohou ukládat. Kdykoli je proměnná definována v C++, kompilátor alokuje určitou paměť pro tuto proměnnou na základě datového typu, se kterým je deklarována. Každý datový typ vyžaduje jiné množství paměti.

C++ podporuje širokou škálu datových typů a programátor může vybrat datový typ vhodný pro potřeby aplikace. Datové typy určují velikost a typy hodnot, které mají být uloženy. Reprezentace úložiště a strojové instrukce pro manipulaci s každým datovým typem se však liší stroj od stroje, i když instrukce C++ jsou na všech strojích totožné.



C++ podporuje následující datové typy:

  1. Hlavní nebo Vestavěný nebo Základní datový typ
  2. Odvozené datové typy
  3. Uživatelsky definované datové typy

Datové typy v C++

Datové typy v C++ se dělí hlavně na 3 typy:

1. Primitivní datové typy : Tyto datové typy jsou vestavěné nebo předdefinované datové typy a uživatel je může přímo použít k deklaraci proměnných. příklad: int, char, float, bool atd. Primitivní datové typy dostupné v C++ jsou:



  • Celé číslo
  • Charakter
  • Boolean
  • Plovoucí bod
  • Dvojitý plovoucí bod
  • Bezcenné nebo Void
  • Široký charakter

2. Odvozené datové typy: Funkce

  • Pole
  • Ukazatel
  • Odkaz
  • 3. Abstraktní nebo uživatelem definované typy dat : Třída

  • Struktura

  • Třída
  • svaz
  • Třída
  • Výčet
  • Datový typ definovaný typem
  • Primitivní datové typy

      Třída
    • Celé číslo : Klíčové slovo používané pro celočíselné datové typy je int . Celá čísla obvykle vyžadují 4 bajty paměťového prostoru a mají rozsah od -2147483648 do 2147483647.
    • Charakter : Znakový datový typ se používá pro ukládání znaků. Klíčové slovo použité pro znakový datový typ je char . Znaky obvykle vyžadují 1 bajt paměti a rozsah od -128 do 127 nebo 0 až 255.
    • Boolean : Booleovský datový typ se používá pro ukládání booleovských nebo logických hodnot. Booleovská proměnná může uložit obojí skutečný nebo Nepravdivé . Klíčové slovo použité pro datový typ Boolean je bool .
    • Plovoucí bod : Datový typ s plovoucí desetinnou čárkou se používá pro ukládání hodnot s plovoucí desetinnou čárkou s jednoduchou přesností nebo desetinných hodnot. Klíčové slovo použité pro datový typ s plovoucí desetinnou čárkou je plovák . Float proměnné obvykle vyžadují 4 bajty paměťového prostoru.
    • Dvojitý plovoucí bod : Datový typ Double Floating Point se používá pro ukládání hodnot s plovoucí desetinnou čárkou s dvojitou přesností nebo desetinných hodnot. Klíčové slovo použité pro datový typ double floating-point je dvojnásobek . Dvojité proměnné obvykle vyžadují 8 bajtů paměti.
    • prázdnota : Void znamená bez jakékoli hodnoty. datový typ void představuje bezhodnotovou entitu. Datový typ void se používá pro ty funkce, které nevrací hodnotu.
    • Třída
    • Široký charakter : Široký charakter datový typ je také znakový datový typ, ale tento datový typ má větší velikost než normální 8bitový datový typ. Reprezentováno wchar_t . Obvykle je dlouhý 2 nebo 4 bajty.
    • Operátor sizeof(): Operátor sizeof(). se používá k nalezení počtu bajtů obsazených proměnnou/datovým typem v paměti počítače.

    Příklad:



    int m, x[50];

    cout<

    cout<

    Velikost proměnných se může lišit od velikosti uvedené ve výše uvedené tabulce v závislosti na kompilátoru a počítači, který používáte.

    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ýstup

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

    Časová náročnost: O(1)

    Prostorová složitost: O(1)

    Modifikátory datových typů

    Jak název napovídá, modifikátory datových typů se používají s vestavěnými datovými typy k úpravě délky dat, která může konkrétní datový typ pojmout.

    Modifikátory v C++

    Modifikátory datových typů dostupné v C++ jsou:

    • Podepsaný
    • Nepodepsaný
    • Krátký
    • Dlouho

    Níže uvedená tabulka shrnuje upravenou velikost a rozsah vestavěných datových typů v kombinaci s modifikátory typu:

    Datový typ

    Velikost (v bajtech)

    Rozsah

    krátký int

    2

    -32 768 až 32 767

    unsigned short int

    2

    0 až 65 535

    nepodepsaný int

    4

    0 až 4,294,967,295

    int

    4

    -2 147 483 648 až 2 147 483 647

    rdbms

    dlouhá int

    4

    -2 147 483 648 až 2 147 483 647

    unsigned long int

    4

    0 až 4,294,967,295

    dlouhý dlouhý int

    8

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

    unsigned long long int

    8

    0 až 18,446,744,073,709,551,615

    podepsaný char

    1

    -128 až 127

    nepodepsaný char

    1

    0 až 255

    plovák

    4

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

    dvojnásobek

    8

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

    dlouhý dvojitý

    12

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

    wchar_t

    2 nebo 4

    1 široký znak

    Poznámka : Výše ​​uvedené hodnoty se mohou lišit kompilátor od kompilátoru. Ve výše uvedeném příkladu jsme uvažovali 32bitový GCC.
    Velikost všech datových typů můžeme zobrazit pomocí operátoru sizeof() a předáním klíčového slova datového typu jako argumentu této funkce, jak je uvedeno níže:

    Chcete-li nyní získat rozsah datových typů, podívejte se na následující tabulku

    Poznámka: syntaxe hlavičkový soubor je definován pro nalezení rozsahu základních datových typů. Modifikátory bez znaménka mají minimální hodnotu nula. Pro minimální hodnotu bez znaménka tedy nejsou definovány žádné makro konstanty.

    Makro konstanty

    název

    Vyjadřuje

    CHAR_MIN

    Minimální hodnota pro objekt typu char

    CHAR_MAX

    Maximální hodnota pro objekt typu char

    SCHAR_MIN

    Minimální hodnota pro objekt typu Signed char

    SCHAR_MAX

    Maximální hodnota pro objekt typu Signed char

    FLIGHT_MAX

    Maximální hodnota pro objekt typu Unsigned char

    CHAR_BIT

    Počet bitů v objektu char

    MB_LEN_MAX

    Maximální počet bajtů ve vícebajtovém znaku

    SHRT_MIN

    Minimální hodnota pro objekt typu short int

    SHRT_MAX

    Maximální hodnota pro objekt typu short int

    USHRT_MAX

    Maximální hodnota pro objekt typu Unsigned short int

    INT_MIN

    Minimální hodnota pro objekt typu int

    INT_MAX

    Maximální hodnota pro objekt typu int

    UINT_MAX

    Maximální hodnota pro objekt typu Unsigned int

    LONG_MIN

    Minimální hodnota pro objekt typu long int

    LONG_MAX

    Maximální hodnota pro objekt typu long int

    HEAD_MAX

    Maximální hodnota pro objekt typu Unsigned long int

    SHIP_MIN

    Minimální hodnota pro objekt typu long long int

    LLONG_MAX

    Maximální hodnota pro objekt typu long long int

    ULLONG_MAX

    Maximální hodnota pro objekt typu Unsigned long long int

    Skutečná hodnota závisí na konkrétním systému a implementaci knihovny, ale musí odrážet limity těchto typů v cílové platformě. LLONG_MIN, LLONG_MAX a ULLONG_MAX jsou definovány pro knihovny splňující standard C z roku 1999 nebo novější (který zahrnuje pouze standard C++ od roku 2011: C++11).

    C++ Program pro nalezení rozsahu datových typů pomocí makro konstant

    Pří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ýstup

    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á náročnost: O(1)

    Prostorová složitost: 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ýstup

    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 proměnné různých datových typů, přiřadí jim hodnoty a následně jejich hodnoty vytiskne.

    Celočíselné datové typy zahrnují int, short, long a long long. Tyto datové typy představují celá čísla různých velikostí.

    Mezi datové typy s pohyblivou řádovou čárkou patří float, double a long double. Tyto datové typy představují reálná čísla s různou úrovní přesnosti.

    Typy znakových dat zahrnují char, wchar_t, char16_t a char32_t. Tyto datové typy představují jednotlivé znaky různé velikosti.

    Booleovský datový typ je jednoduchý datový typ, který může mít pouze jednu ze dvou hodnot: true nebo false.

    Datový typ řetězec je posloupnost znaků. V tomto programu používáme třídu string k deklaraci řetězcové proměnné a přiřazení její hodnoty.

    Výhody :

    Datové typy poskytují způsob, jak kategorizovat a organizovat data v programu, což usnadňuje jejich pochopení a správu.
    Každý datový typ má specifický rozsah hodnot, který může obsahovat, což umožňuje přesnější kontrolu nad typem ukládaných dat.
    Datové typy pomáhají předcházet chybám a chybám v programu tím, že vynucují přísná pravidla o tom, jak lze data používat a jak s nimi manipulovat.
    C++ poskytuje širokou škálu datových typů, což umožňuje vývojářům vybrat nejlepší typ pro konkrétní úlohu.

    Nevýhody :

    Použití nesprávného datového typu může mít za následek neočekávané chování a chyby v programu.
    Některé datové typy, jako jsou pole long double nebo char, mohou při nadměrném používání zabírat velké množství paměti a ovlivnit výkon.
    Komplexní typový systém C++ může začátečníkům ztížit efektivní učení a používání jazyka.
    Použití datových typů může dodat programu další složitost a upovídanost, což znesnadňuje čtení a porozumění.