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.