Obsah
Datový typ Char (Character)
Char je primitivní datový typ používaný k reprezentaci jednoho znaku. Je stavebním kamenem pro všechny textové řetězce a hraje klíčovou roli v mezinárodní komunikaci a lokalizaci softwaru.
1. Reprezentace v paměti
Znaky nejsou v počítači uloženy jako obrázky, ale jako sekvence bitů. Způsob, jakým se číselná hodnota převede na viditelný znak, určuje kódování.
- Binární podstata: Pokud uložíme znak `'A'`, procesor v paměti ve skutečnosti vidí binární hodnotu $01000001_2$ (v desítkové soustavě 65).
- Velikost: * V jazycích jako C/C++ zabírá obvykle 1 byte (8 bitů), což stačí pro 256 znaků.
- V moderních jazycích jako Java nebo C# zabírá 2 byty (16 bitů), aby mohl nativně reprezentovat širší sadu Unicode.
—
2. Klíčové standardy kódování
ASCII (American Standard Code for Information Interchange)
Základní 7bitový kód (rozšířený na 8bitový), který definoval 128 základních znaků.
- Obsahuje velká a malá písmena anglické abecedy, číslice 0–9 a řídicí znaky (např. odřádkování).
- Omezení: Neobsahuje diakritiku (háčky, čárky) ani jiná písma než latinku.
Unicode (Universal Character Set)
Standard, jehož cílem je sjednotit všechna písma světa (včetně emoji a historických písem).
- UTF-8: Nejpopulárnější kódování současnosti. Je proměnlivé délky (1 až 4 byty). Prvních 127 znaků je identických s ASCII, což zajišťuje zpětnou kompatibilitu.
- UTF-16: Používá primárně 2 byty pro každý znak.
—
3. Speciální typy znaků
V programování se setkáváme se znaky, které nejsou přímo viditelné nebo mají speciální funkci.
Řídicí znaky (Control Characters)
Původně sloužily k ovládání dálnopisů a tiskáren:
- `CR` (Carriage Return) – Návrat vozíku.
- `LF` (Line Feed) – Posun o řádek.
- `NULL` (Nulový znak) – V jazyce C označuje konec řetězce.
Escape sekvence
Způsob, jak zapsat speciální znaky v kódu pomocí zpětného lomítka:
- `\n` – Nový řádek.
- `\t` – Tabulátor.
- `\uXXXX` – Zápis konkrétního znaku pomocí jeho Unicode hexadecimálního kódu.
—
4. Operace se znaky
Protože je `char` vnitřně číslo, lze s ním provádět aritmetické operace:
- Inkrementace: Pokud k `'A'` (65) přičteme 1, získáme `'B'` (66).
- Porovnávání: Znaky lze řadit (např. `'a' > 'A'` je v ASCII pravdivý výraz, protože malá písmena mají vyšší číselnou hodnotu).
—
5. Char vs. String
Je důležité rozlišovat mezi těmito dvěma pojmy:
- Char: Jeden prvek, obvykle v jednoduchých uvozovkách (`'x'`).
- String: Kolekce (pole) znaků, obvykle v dvojitých uvozovkách (`„text“`). String je v paměti ukončen buď speciálním znakem (null-terminated), nebo má délku uloženou v hlavičce.
Související články:
Tagy: programming char encoding ascii unicode data-types
