User Manual

64
4.4.4. Proměnné
Nejprve se podíváme na ukládání a čtení dat v paměti RAM. Přístup k datům se provádí pomocí
proměnných. Jazyk C z pro proměnné několik datových typů. V podstatě budeme používat 8,
16 nebo 32 bitové celočísel datové typy, které se mohou používat ve tvaru se znaménkem
nebo bez znaménka. Příslušný rozsah hodnot určuje potřebný počet bitů, které se musí vyhradit
pro uložení proměnné.
V programech pro RP6 budeme používat sledující datové typy:
Typ
Alternativa
Rozsah hodnot
Poznámky
signed char int8_t 8 bitů: -128...+127 1 Byte
char uint8_t 8 bitů: 0..255 '' bez znaménka
int int16_t 16 bitů: -32768...+32767 2 Byte
unsigned int uint16_t 16 bitů: 0..65535 '' bez znaménka
long int32_t 32 bitů: –2147483648...+2147483647 4 Byte
unsinged long uint32_t 32 bitů: 0...4294967295 '' bez znaménka
Nedostatečná standardizace dovoluje definici několika různých velikosti stejného datového
typu. Speciálně to platí pro datový typ "int": pro naše mikroprocesory je velikost 16 bitů, ale u
moderních PC je to 32 bitů. Z tohoto důvodu preferujeme moderní standardní definici: int16_t.
Taková definice datového typu je dy stej: [u] int N _t
kde: u : unsigned
int: integer
N : počet bitů tj. 8, 16, 32 nebo 64
_t : t je označení pro ”typ”, které zabrání kolizi s jinými symboly
Na malém mikroprocesoru se bude pečlivě počítat každý jednotli byte a jednoznač definice
datových typů pomůže při sledování zabrané paměti. Podle číslice 16 v zvu datového typu
můžete okamžitě rozpoznat 16-bito datový typ. Písmeno "u" na začátku označí datový typ
jako "bez znaménka".
U běžných (klasických) datoch typů se pro typ signed char” používá
zkrácené označení signed viz předchozí tabulka, stejně tak int a long
definují typy se znaménkem a char je bez znaménka, i kd to není
explicitně napsáno. Důvod pro tyto definice je AVR-GCC varianta
kompilátoru, které se používá ve většině případů.
Dato typ char se bude používat pro řetězce, protože definice "uint8_t"
může vést k nějaké nekompatibilitě se standardními knihovnami jazyka C a
"char" je jasný a logický zev pro znak nebo řetězec. Podrobnosti o tomto tématu probereme
v kapitole RP6Library při textových výstupech přes sériové rozhraní.
Nyní prostě vezmeme na vědomí: pro znaky a řetězce budeme dy používat typ "char",
respektive uintN_t nebo intN_t pro celá čísla!