====== 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:// * [[it:sw:data_types|Přehled datových typů]] * [[it:math:binary|Binární soustava]] * [[it:sw:unicode|Standard Unicode a UTF-8]] //Tagy: {{tag>programming char encoding ascii unicode data-types}}//