Datové typy

Přehled informací

Celočíselné datové typy

Celá čísla

Datový typ
Rozsah hodnot
int
(-2147483647 - 1) až 2147483647
unsigned int
0 až 65535
short int
-32768 až 32767
unsigned short int
0 až 65535
long int
(-2147483647L - 1) až 2147483647L
unsigned long int
0 až 4294967295

Pokud si nejste jisti maximálním rozsahem jednotlivých datových typů, můžete je najít v souboru limits.h případně ve specializaci šablony třídy numeric_limits.

Logické hodnoty

Datový typ
Možné hodnoty
bool
true - false

Proměnným typu bool je možné přiřadit i číselnou hodnotu s následujícím významem:

Při přiřazení proměnné typu bool celočíselné proměnné (viz příklad), je logická proměnná převedena na číslo následujícím způsobem:

Znakové hodnoty

Datový typ
Rozsah hodnot
char
-128 až 127 nebo 0 až 255
signed char
-128 až 127
unsigned char
0 až 255
wchar_t

Pozor jazyk C++ rozlišuje mezi sebou hodnoty char / unsigned char / signed char. Tento rys využijeme v programech při rozlišování přetížených funkcí.

Datový typ slouží pro práci s tzv. "širokými znaky" - znaky, které nelze zakódovat v 8 bitech (týká se především asijských jazyků).

Reálné datové typy

Reálná čísla

Datový typ
Rozsah hodnot
float
1.175494351e-38 až 3.402823466e+38
double
2.2250738585072014e-308 až 1.7976931348623158e+308
long double
1.189731495357231765e+4932 až 3.3621031431120935063e-4932

Pokud si nejste jisti maximálním rozsahem jednotlivých datových typů, můžete je najít v souboru float.h případně ve specializaci šablony třídy numeric_limits.

Výčtové datové typy

Používají se jako příznaky k vyjádření hodnot, které se vyskytují v malém množství. Jejich hodnoty jsou určeny pomocí celočíselných konstant.

Syntaxe deklarace

  enum [jmenovka]
  {
    položka1[=hodnota1],položka2[=hodnota2],...
  } [proměnná1, proměnná2,...];

Argumenty deklarace

jmenovka
Nepovinná. Je-li uvedena jedná se o deklaraci výčtového typu, jehož jméno bude jmenovka. Není-li jmenovka uvedena, definujeme touto deklarací pouze skupinu pojmenovaných konstant.
položka
Povinná, identifikátor hodnoty výčtového typu,
hodnota

Nepovinná, hodnota, kterou představuje odpovídající položka. Hodnota musí být konstantní celočíselný výraz. Pokud ji u některé položky vynecháme, přidělí ji překladač o 1 větší než u předchozí hodnoty. Není-li uvedena hodnota u první položky je jí přidělena hodnota 0.

Poznámka - různé položky mohou mít stejné hodnoty.

proměnná
Nepovinné, definice proměnných, ukazatelů na ně atd. tohoto typu (vytvářeného typu enum). Lze je definovat i později.

Příklad použití výčtového datového typu

  enum Dny        // deklarace datového typu enum Dny
  {
    pondeli,      // pondeli = 0
    utery = 1,    // utery = 1
    streda,       // streda = 2 (utery + 1)
    ctvrtek,      // ctvrtek = 3
    patek,        // patek = 4
    sobota,       // sobota = 5
    nedele = 5    // nedele = 5
  } dnes;         // definice proměnné  dnes typu Dny

  int  pondeli;   // chyba ! redefinice
  enum Dny vcera; // možné použití v C a C++
  Dny zitra;      // možné použití pouze v C++

  vcera = pondeli;

  int i = utery;  // možné použití, i = 2
  vcera = 0;      // chyba, není možná konverze
  vcera = (Dny)0; // možné použití, ale výsledek nebude definován

Ve výpisu je nejprve deklarován výčtový datový typ Dny. Na konci deklarace je vytvořena instance (proměnná) typu Dny se jménem dnes. Dále jsou ukázány správné a špatné definice proměnných. Význam viz komentáře.