Co určuje datový typ: "PHO" (!)
Tvoří dvě základní skupiny — typy „se znaménkem“ a „bez znaménka“. Celočíselné typy se znaménkem mohou obsahovat jak kladná tak i záporná čísla,
zatímco typy bez znaménka mohou obsahovat pouze kladná čísla a 0.
Celočíselné typy se znaménkem jsou signed char, short, int a long a ještě typ long long.
Celočíselné typy bez znaménka jsou unsigned char. unsigned short. unsigned. unsigned long a unsigned long long.
Standard jazyka nepředepisuje jejich rozsah, stanoví však, že rozsah typu short nesmí být větší než typ int, rozsah typu int nesmí být větší než typ long.
short <= int <= long <= long long
unsigned short <= unsigned int <= unsigned long <= unsigned long long
int má délku podle kompilátoru a to:
V jazyce C++ máme k disposici 4 znakové typy
Typy char, unsigned char a signed char zabírají 1 B a slouží především pro práci s evropskými znaky. Typ wchar.t zabírá typicky 2B nebo 4B a používá se pro práci s asijskými znaky nebo s kódem UNICODE.
Typ char je v C++ implementován jako 1 B se znaménkem nebo bez znaménka, tedy vlastně jako signed char nebo unsigned char, považuje se však za zvláštní typ. Typ wchar_t je v C++ základní typ, v jazyce C je implementován pomocí deklarace typedef. V obou jazyích se chová jako jeden z celočíselných typů bez znaménka.
Se znaky zacházíme podobně jako s ostatními celočíselnými typy, to znamená, že je můžeme používat ve výrazech podobně jako celá čísla. Jediný zásadní rozdíl se týká vstupů a výstupů znaků pomocí objektových datových proudů (cin. cout atd.), kdy se hodnoty znakových typů chovají opravdu jako znaky, nikoli jako čísla.
Tyto typy specifikují určité konečné podmnožiny množiny reálných čísel. V paměti jsou tato čísla zpravidla uložena ve tvaru odvozeném od semilogaritmického zápisu, tedy od zápisu, jako je 6,27 x 10^12. (Počítač ovšem samozřejmě využívá dvojkovou soustavu.) Číslo 6,27 zde nazýváme "mantisa", číslo 12 "exponent". V C++ můžeme pro práci s reálnými čísly používat typy float, double a long double. Také zde norma jazyka nestanoví rozsah těchto typů, pouze požaduje, aby platilo:
float <= double <= long double
Způsob pro zavedení nového datového typu založeného na struktuře lze provést pomocí klíčového slova typedef.
Nejúplnější definice vypadá takto:
typedef struct clovek { char jmeno[50]; int vek; double hmotnost, vyska; }CLOVEK;
Kde clovek je název struktury a CLOVEK název nového datového typu. Jinými slovy slovní spojení struct clovek vyjadřuje totéž, co jedno slovo CLOVEK a výše definované proměnné nyní mohu zavést i takto:
CLOVEK Jenda, Bara;
Při použití typedef je třeba pojmenovat strukturu pouze v případě, že by některou z jejích složek byl pointer na ni samu. Jinak lze název struktury vynechat.
Položka dané struktury nemůže být právě vytvářeného datového typu přesněji název typu každé položky musí být různý od jména struktury, která ji obsahuje,
či od jména právě vytvářeného typu. Položka však může být typu pointer na strukturu ve které je obsažena (nikoli však pointer na typ,
který vytváříme pomocí typedef ).
K jednotlivým položkám proměnných tohoto typu pak přistupuji takto:
strcpy(p_Bara->jmeno, "Bára Zvučná"); p_Bara->vek = 20; printf("%d",p_Bara->vek);
Následující datové typy jsou probírány v samostatné kapitole číslo 8.
FILE *fw;
class Trida { private: // zde vidi jen objekty tridy int i; protected: // zde vidi jen objekty teto a zdedenych trid float f: public: Trida(); // implicitni konstruktor
~Trida(); //destruktor void nacti(); // deklarace fce - definice radeji na konci programu };