Linux E X P R E S

Facebook

Programovanie v jazyku C++: Celočíselný špeciálny typ premennej char

cplusplus.png

Doteraz sme sa stretli s týmito celočíselnými typmi: int, short a long. Existuje ale špeciálny celočíselný typ premennej a tento typ nazývame char. Práve typ char bude hlavnou témou tohto článku.


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.

Diskuze (0) Nahoru