Premenné typu char
Celočíselný typ char predstavuje platformu na ukladanie písmen a číslic. Všeobecne do pamäte nie je problém uložiť číslo, ale ukladanie písmen do pamäte je už hotová fuška. Preto sa vymyslel celočíselný typ char, ktorý reprezentuje písmeno pomocou číselnej hodnoty.
Rozsah premennej typu char je 1 bajt. To je presne 256 možností alebo inak, 256 znakov. Síce sa char používa na reprezentáciu písmen, nie je ho problém využiť ako celočíselnú premennú, ktorá má menší rozsah ako typ short.
Najrozšírenejšia sada symbolov, podľa ktorej písmena (a všeobecne znaky) dostavajú číselnú podobu je ASCII tabuľka. Napríklad písmeno „b“ nadobúda v ASCII tabuľke hodnotu 98. Programovací jazyk C++ nie je výnimkou používania tejto jednoduchej reprezentácii znakov.
Základná tabuľka ASCII využíva len polovicu rozsahu (128 znakov). Rozšírené tabuľky znakov (napr. ISO 8859) využívajú celý rozsah. Znaky možno reprezentovať aj ako Unicode, kde konkrétna podoba závisí na použitej mapovacej metóde a kódovaní.
1. program Keď písmeno je číslo a naopak
#include <iostream> //hlavičkový súbor iostream using namespace std; //priestor mien int main() //hlavná funkcia main { char c = 'b'; //deklarácie premenných int a = c; cout << "Znak "<<c<<" je vlastne číslo "<<a<<"."; //výpis na obrazovku int b = 100; cout << "\n"; char d = b; cout << "Číslo "<<b<<" je vlastne znak "<<d<<"."; return 0; //koniec programu }
Výsledok:
Znak b je vlastne číslo 98. Číslo 100 je vlastne znak d.
Ako z prvého príkladu vidíte, definujeme znakovú konštantu takto 'ľubovoľný znak’.
Escape sekvencie
Jazyk C++ pozná špeciálne znaky, ktorými môžeme definovať rôzne akcie v programe. Viac v tabuľke:
Akcia |
Reprezentácia v C++ |
Desiatkový kód |
Hexadecimálny kód |
Nový riadok |
\n |
10 |
0xA |
Horizontálny tabulátor |
\t |
9 |
0x9 |
Vertikálny tabulátor |
\v |
11 |
0xB |
Návrat na predchádzajúci znak |
\b |
8 |
0x8 |
Zvuková výstraha |
\a |
7 |
0x7 |
Na vykonanie akcie môžete použiť nielen symbolickú reprezentáciu v jazyku C++, ale aj desiatkovú alebo hexadecimálnu číselnú reprezentáciu. Avšak odporúča sa používať symbolickú reprezentáciu. Pretože symbolická reprezentácia nepracuje len s ASCII tabuľkou, ale so všetkými možnými tabuľkami.
2. príklad: Jednoduché precvičenie niektorých escapových sekvencii
#include <iostream> //hlavičkový súbor iostream using namespace std; //priestor mien int main() //hlavná funkcia main { cout << "Ahoj\n"; //experimenty s escape sekvenciami cout << "kamarád môj,\t"; cout << "ako sa\v"; cout << "maš?\b"; return 0; //koniec programu }
Typ char so znamienkom
Bežne sa nepoužíva znamienko pred typom premennej char. Avšak, jazyk C++ myslí i na túto možnosť a v prípade využitia char ako číslo, môžete použiť signed alebo unsigned. V prípade signed char je rozsah premennej od -128 až 127. U unsigned char je to od 0 do 255.
Ak chcete reprezentovať znak pomocou ASCII tabuľky, nezáleží, či použijete typ char so znamienkom alebo bez znamienka. Ak chcete napríklad uložiť číslo 254, tak použijete unsigned char.
Na záver si dáme príklad:
3. príklad: Použitie signed alebo unsigned
#include <iostream> //hlavičkový súbor iostream using namespace std; //priestor mien int main() //hlavná funkcia main { int a = 128; //deklarácie premenných int b = 256; signed char c = a; unsigned char d = b; cout <<(int)c<<"\n"; //výpisy na obrazovku cout <<(int)d<<"\n"; return 0; //koniec programu }
Výsledok:
-128
0
Rozbor programu: Vidíme, že ak je presiahnutá hranica možností danej premennej, zobrazí sa číslo (alebo znak) z druhej strany rozsahu.