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:
- Hlavní nebo Vestavěný nebo Základní datový typ
- Odvozené datové typy
- Uživatelsky definované datové typy
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
3. Abstraktní nebo uživatelem definované typy dat : Třída
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 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í.