Linux E X P R E S

Facebook

Programovanie v jazyku C++: Typy premenných

cplusplus.png

V tomto článku pokračujeme základným celočíselnými typmi. Ukážeme si tabuľku i pár názorných príkladov k nej.


Tabuľka typov premenných

Na začiatok sľúbená tabuľka z minulého dielu. Na základe tejto tabuľky sa budeme v ďalších častiach odkazovať a riadiť.

Typ premennej

Veľkosť premennej v pamäti

Rozsah (typicky)

char

1 bajt (= min. 8 bitov)

-128 až 127 alebo 0 až 255

char16_t

min. ako char a min. 16 bitov

-32 768 až 32 767

char32_t

min. ako char16_t a min. 32 bitov

-2 147 483 648 až 2 147 483 647

wchar_t

podľa najväčšej podporované znakovej sady

signed char

1 bajt (= min. 8 bitov)

-128 až 127

signed short int1

min. ako signed char a min. 16 bitov

-32 768 až 32 767

signed int2

min. ako signed short int a min. 16 bitov

-2 147 483 648 až 2 147 483 647

signed long int3

min. ako signed int a min. 32 bitov

-2 147 483 648 až 2 147 483 647

signed long long int4

min. ako signed long int a min. 64 bitov

0 až 9 223 372 036 854 775 808

unsigned char

ako signed char

0 až 255

unsigned short int5

ako signed short int

0 až 65 535

unsigned int6

ako signed int

0 až 4 294 967 295

unsigned long int7

ako signed long int

0 až 4 294 967 295

unsigned long long int8

ako signed long long int

0 až 18 446 744 073 709 551 615

float

typicky 32 bitov

±3,402823·10±38

double

min. ako float (typicky 64 bitov)

±1,7·10±308

long double

min. ako double (typicky 80 bitov)

bool

typicky 1 bajt (= min. 8 bitov)

false, true

void

žiadna

Poznámka k názvom typov – možno písať tiež skrátene jako (podľa číselných odkazov v tabuľke):

  1. signed short, short int, short
  2. int
  3. signed long, long int, long
  4. signed long long, long long int, long long
  5. unsigned short
  6. unsigned
  7. unsigned long
  8. unsigned long long

Poďme si veľkosti premenných v pamäti overiť programom.

1.program: Overenie veľkosti premenných v pamäti

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

using namespace std;   //priestor mien

int main()   //funkcia main
{
  cout << "Size of int: "<<sizeof(int);   //jednotlivé vypísanie veľkosti 
  cout << "\nSize of unsigned int: "<<sizeof(unsigned int);
  cout << "\nSize of signed int: "<<sizeof(signed int);
  cout << "\nSize of short int: "<<sizeof(short int);
  cout << "\nSize of unsigned short int: "<<sizeof(unsigned short int);
  cout << "\nSize of signed short int: "<<sizeof(signed short int);
  cout << "\nSize of long int: "<<sizeof(long int);
  cout << "\nSize of signed long int: "<<sizeof(signed long int);
  cout << "\nSize of unsigned long int: "<<sizeof(unsigned long int);
  cout << "\nSize of float: "<<sizeof(float);
  cout << "\nSize of double: "<<sizeof(double);
  cout << "\nSize of char: "<<sizeof(char);
  cout << "\nSize of unsigned char: "<<sizeof(unsigned char);
  cout << "\nSize of signed char: "<<sizeof(signed char);
  cout << "\nSize of wchar_t: "<<sizeof(wchar_t);
}

Operátor sizeof ukáže veľkosť premennej v bajtoch.

Treba podotknúť, že nie vo všetkých počítačových systémov sú rovnaké hodnoty veľkosti premenných. Avšak, vyššie uvedená tabuľka (typické hodnoty) by mala platiť v drtivej väčšine dnešných počítačov.



2. program: Rozsah vybraných typov premenných

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

using namespace std;   //priestor mien
int main()   //funkcia main
{
  //vypísanie rozsahu jednotlivých typov premenných

  cout << "Rozsah premennej int je: od "<<INT_MIN<<" do "<<INT_MAX;
  cout << "\nRozsah premennej short je: od "<<SHRT_MIN<<" do "<<SHRT_MAX;
  cout << "\nRozsah premennej long je: od "<<LONG_MIN<<" do "<<LONG_MAX;
  cout << "\nRozsah premennej float je: od "<<FLT_MIN<<" do "<<FLT_MAX;
  cout << "\nRozsah premennej double je: od "<<DBL_MIN<<" do "<<DBL_MAX;
  cout << "\nRozsah premennej char je: od "<<CHAR_MIN<<" do "<<CHAR_MAX;
  cout << "\nRozsah premennej signed char je: od "<<SCHAR_MIN<<" do "<<SCHAR_MAX;
  cout << "\nRozsah premennej wchar_t je: od "<<WCHAR_MIN<<" do "<<WCHAR_MAX;
}

Hlavičkový súbor climits definuje rozsah typov premenných okrem floatdouble. Pre rozsah floatdouble použijeme hlavičkový súbor cfloat.

Symbolické konštanty v hlavičkovom súbore climits

Majme príklad, kde symbolická konštanta v tváre napríklad INT_MAX je definovaná ako direktíva predprocesora. V hlavičkovom súbore climits sú pomocou direktívy #define definované všetky symbolické konštanty, z ktorých sme časť z nich použili v programe 2.

3. program: 

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

#define SHRT_MAX 32767  //definujeme maximálny rozsah pre short
#define SHRT_MIN -32768   //definujeme minimálny rozsah pre short

using namespace std;   //priestor mien

int main()   //funkcia main
{
  //maximálny a minimálny rozsah pre short
  cout << "Rozsah premennej short je: od "<<SHRT_MIN<<" do "<<SHRT_MAX;
}

Rozbor programu: ako sme v skorších častiach spomínali, pri kompilácii sa ako prvé spracuje zdrojový kód predprocesoru. Tak ako funguje #include, funguje i #define. Viac o procesu kompilácie nájdete v tomto članku.

Diskuze (2) Nahoru