Obsah
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 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:
Tagy: programming data-types char ascii unicode encoding
