04_zakladni_datove_typy
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
Reálné typy, s pohyblivou desetinnou tečnou
• Z hlediska velikosti v paměti:
• float <= double <= long double
• Z hlediska konverzního řádu
• jakýkoli celočíselný typ < float < double < long double
Konverze datových typů
• Převody jsou v různých jazycích hodně přísné
• Možná ztráta přesnosti při převodu
• Možné přetečení, podtečení při převodu
• Pozor na převod signed na unsigned stejného typu
• Celočíselné typy s více bity než má mantisa reálného čísla se také neuloží správně
char c;
int i;
float f;
double d;
c / i ;
// konverze na int
f / d ;
// konverze na double
f / i ;
// konverze na float
// mají-li oba typy float i int 32 bitů
//
-> proměnná i se do mantisy nevejde celá
Typy definované výčtem
• Datový typ enum
• Zápis v definici v textové podobě
• Nelze využít pro načtení a tisk
• V programu reprezentován celočíselným datovým typem
• Přímé použití celočíselných hodnot se nedoporučuje
• Hodnoty možné přiřadit při inicializaci
• Výhodné při použití příkazu switch
• Př. enum EStav {OK=0,NotInit,BadResult};
Pole
• Více prvků stejného datového typu
• Indexace prvků -> přístup přes index ke všem prvkům stejně rychlý
• Operace přidání/ubrání prvku -> náročné
• Nutné řešit přístup mimo index (jazyk C neřeší)
Záznam, struktura
• Prvky různého typu
• Nemůže mít prvky stejného typu jako nový typ
• Nekonečná smyčka
• Nutné použít ukazatel
• Tvoří nový typ
Union
• Prvky různého typu
• Vždy jen jeden aktivní
• Tvoří nový typ
• Využívá se pro univerzální funkce
Soubor
• Může být
• Typ
• Soubor na disku
• Proměnná velikost
• Nemá index
• Neomezená velikostí typu indexu
• Sekvenční (sériový) přístup k datům
• časově různá přístupová doba k datům
• Sériová linka
• Např. data z teploměru – vždy pouze jedna hodnota, nelze se vrátit zpě
• Nebo data zaznamenaná – lze vrátit na začátek a provést nastavení na danou pozici