přejít na obsah přejít na navigaci

Linux E X P R E S, Programovanie v jazyku C++: Celočíselne typy bez znamienka a celočíselne konštanty

ALTEC

Programovanie v jazyku C++: Celočíselne typy bez znamienka a celočíselne konštanty

cplusplus.png

V tomto článku si rozoberieme jednú možnosť definovania celočíselných typov. Taktiež si vysvetlíme, čo sú celočíselne konštanty.


reklama

Celočíselné typy bez znamienka

Každá z troch celočíselných typov premenných, sa môže písať „bez znamienka“. Celočíselný typ so znamienkom napríklad typu premennej int, má rozsah od -2 147 483 648 do 2 147 483 647.

Aký bude mať rozsah premenná typu int bez znamienka? 0 do 4 294 967 295. Na definovanie typu bez znamienka použijete v jazyku C++ slovo unsigned.

Dáme si na unsigned príklad.

1. príklad: Použitie celočíselného typu bez znamienka

#include <iostream>   //hlavičkové súbory
#include <climits>

using namespace std;   //priestor mien

int main()   //funkcia main
{
    int a = INT_MAX;   //deklarácie premenných
    unsigned int b = a;
    cout << "Premenna a ma hodnotu: "<<a;   //vypísanie na obrazovku
    cout << "\nPremenna b ma hodnotu: "<<b<<"\n";
    a = a + 1;   //operácie
    b = b + 1;
    cout <<  "\n";
    cout << "Zväčšime premenne o +1\n";
    cout << "\n";
    cout << "Premenna a ma hodnotu: "<<a;
    cout << "\nPremenna b ma hodnotu:  "<<b<<"\n";
    cout << "\n";
    cout << "Vynulujeme premenne a nasledne ich zmenšime o -1\n";
    a = 0;
    b = 0;
    a = a – 1;
    b = b – 1;
    cout <<"\n";
    cout << "Premenna a ma hodnotu: "<<a;
    cout << "\nPremenna b ma hodnotu: "<<b;
    cout << "\n";
}

Výstup:

Premenna a ma hodnotu: 2147483647
Premenna b ma hodnotu: 2147483647

Zväčšime premenne o +1

Premenna a ma hodnotu: -2147483648
Premenna b ma hodnotu:  2147483648

Vynulujeme premenne a nasledne ich zmenšime o -1

Premenna a ma hodnotu: -1
Premenna b ma hodnotu: 4294967295

Rozbor programu:

Najprv premenné inicializujeme na maximálnu hodnotu v rozsahu int. Následne ich vypíšeme. Zatiaľ nič neočakávane.

V druhom kroku premenným zvýšime hodnotu o 1. Čo sa stane? Pre premennú deklarovanú ako int prejde na maximálnu mínusovú hodnotu. Je to z dôvodu, že nepozná čísla mimo rozsah veľkosti danej premennej. Zatiaľ čo bez znamienka definovaná premenná sa zvýši 1 a je stále v rozsahu unsigned int.

V treťom prípade pokúšame to isté, ale z druhej strany. Keďže unsigned int nepozná zápornú hodnotu, nastaví sa na najvyššiu možnú hodnotu.

Ako vyberať celočíselný typ premennej?

Všeobecne platí, že int má najprirodzenejšiu veľkosť celého čísla. Chápte to tak, že s int počítač pracuje najviac efektívne. Neexistuje žiadne pravidlo, ktoré by uprednostnilo ten typ celočíselnej premennej pred iným. Avšak, kedy by bolo vhodné vybrať si celočíselný typ premennej?

Napríklad máte definovať počet písmen v dokumente či populáciu ľudí. Viete, že tieto veličiny nemôžu byť záporne a tak použijete typ bez znamienka a zároveň tak dostanete dva krát väčší priestor. Ak chcete definovať veľmi veľké čísla, môžete použiť long. Ak programujete nejaké systémy s malou pamäťou, istotne radšej použijete short.

Celočíselné konštanty

V jazyku C++ máte na výber tri druhy zápisu celočíselnej konštanty podľa číselného základu. Prvý je číselný základ podľa čísla 10. Tento spôsob zápisu každý dôverne pozná. Druhý je základ podľa 8. Používa sa hlavne v starších unixových systémoch.

Poznámka šéfredaktora: Asi nejčastějším použitím čísel v osmičkové soustavě (oktalových) je zápis klasických unixových oprávnění a jejich masek. Například hodnota 0644 znamená pro vlastníka souboru práva ke čtení a zápisu, pro skupinu a ostatní uživatele jen ke čtení.

Tretí zápis je podľa číselného základu 16. Známy je ako hexadecimálny.

Ako jazyk C++ rozlišuje tieto tri zápisy podľa základu? Ak má prvé číslo hodnotu od 1 do 9, potom hovoríme o desiatkovom čísle. Napríklad 23 je desiatkové číslo. Ak má prvá číslica  hodnotu 0 a druhá od 1 do 7, potom číslo patrí do základu 8. Napríklad 023 je osmičkové číslo. 023 je v desiatkovej podobe číslo 19.

A čo hexadecimálne? Ako spozná jazyk tento druh zápisu? Ak má tvár 0x alebo 0X, tak číslo má základ 16. Číslo 0x23 má v desiatkovej sústave hodnotu 35.

Dáme si príklad.

2. príklad:

#include <iostream>    //hlavičkový súbor

using namespace std;   //priestor mien

int main()   //funkcia main
{
    int desiatkova = 23;   //deklarácia premennej
    int osmickova = 023;
    int sestnastkova = 0x23;
    cout << "Prevod konštant do desiatkovej sústavy\n";  //vypísanie na obrazovku
    cout << "desiatkova: "<<desiatkova;
    cout << "\nosmickova: "<<osmickova;
    cout << "\nsestnastkova: "<<sestnastkova; 
    cout << "\n";
}

Výsledok programu:

desiatkova: 23
osmickova: 19
sestnastkova: 35

Nahoru

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.


  • Distribuce: ubuntu
  • Grafické prostředí: unity