====== Datový typ char ====== **Char** je primitivní datový typ, který uchovává jeden znak. I když jej lidé vnímají jako písmeno (např. 'A'), počítač jej vnitřně ukládá jako [[it:math:binary|celé číslo]] na základě definovaného kódování. ===== 1. Charakteristika a velikost v paměti ===== Velikost typu char se liší podle použitého programovacího jazyka a kódování: * **C / C++:** Tradičně má velikost **1 bajt** (8 bitů), což umožňuje reprezentovat 256 různých hodnot (standard ASCII). * **Java / C#:** Má velikost **2 bajty** (16 bitů), protože tyto jazyky používají kódování **Unicode (UTF-16)** k podpoře mezinárodních znakových sad. --- ===== 2. Kódování znaků ===== Protože počítač pracuje pouze s čísly, existují standardy (mapy), které říkají, jaké číslo odpovídá jakému znaku: ==== ASCII (American Standard Code for Information Interchange) ==== Nejstarší standard využívající 7 nebo 8 bitů. * Obsahuje pouze latinku, číslice a základní symboly. * Příklad: Znak **'A'** má v ASCII hodnotu **65** ($01000001_2$). ==== Unicode ==== Moderní standard, který se snaží pokrýt všechny znaky všech světových jazyků včetně emotikonů. * **UTF-8:** Nejrozšířenější kódování na webu. Je zpětně kompatibilní s ASCII (prvních 127 znaků je stejných). * **UTF-16:** Používá fixní 2 bajty pro většinu běžných znaků. --- ===== 3. Práce s typem char v kódu ===== Většina programovacích jazyků používá pro zápis typu char **jednoduché uvozovky** (apostrofy), na rozdíl od řetězců (String), které používají dvojité. char pismeno = 'G'; char cislice = '5'; char specialni = '\n'; // Speciální znak pro nový řádek (Escape sekvence) --- ===== 4. Escape sekvence ===== Některé znaky nelze zapsat přímo, protože mají speciální význam nebo jsou neviditelné. Používá se pro ně zpětné lomítko `\`: ^ Sekvence ^ Význam ^ | `\n` | Nový řádek (Newline) | | `\t` | Tabulátor | | `\\` | Zpětné lomítko | | `\'` | Jednoduchá uvozovka | | `\0` | Nulový znak (označuje konec řetězce v jazyce C) | --- ===== 5. Vztah k typu String ===== Zatímco **char** představuje pouze jeden prvek, **String** (řetězec) je v podstatě pole (array) složené z jednotlivých znaků typu char. ---- //Související články:// * [[it:sw:data_types|Přehled datových typů]] * [[it:math:binary|Binární soustava a bity]] * [[it:sw:unicode|Kódování Unicode a UTF-8]] //Tagy: {{tag>programming data-types char ascii unicode encoding}}//