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):
- signed short, short int, short
- int
- signed long, long int, long
- signed long long, long long int, long long
- unsigned short
- unsigned
- unsigned long
- 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 float a double. Pre rozsah float a double 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.








