Raspon vrste podataka i njihove makronaredbe u C ++
Većinu vremena u konkurentnom programiranju potrebno je dodijeliti varijablu maksimalnu ili minimalnu vrijednost koju vrsta podataka može imati, ali pamćenje tako velikog i preciznog broja postaje težak posao. Stoga C ++ ima određene makronaredbe koje predstavljaju ove brojeve tako da se one mogu izravno dodijeliti varijabli bez da zapravo utipkate cijeli broj.
A
Pogledajmo primjer:
C++ #include // for int char macros #include // for float double macros #include using namespace std ; int main () { // Displaying ranges with the help of macros cout < < 'char ranges from: ' < < CHAR_MIN < < ' to ' < < CHAR_MAX < < endl ; cout < < ' n nshort int ranges from: ' < < SHRT_MIN < < ' to ' < < SHRT_MAX < < endl ; cout < < ' n int ranges from: ' < < INT_MIN < < ' to ' < < INT_MAX < < endl ; cout < < ' n long int ranges from: ' < < LONG_MIN < < ' to ' < < LONG_MAX < < endl ; cout < < ' n float ranges from: ' < < FLT_MIN < < ' to ' < < FLT_MAX < < endl ; return 0 ; }
Izlaz
char ranges from: -128 to 127
nshort int ranges from: -32768 to 32767
int ranges from: -2147483648 to 2147483647
long int ranges from: -9223372036854775808 to 9223372036854775807
float ranges from: 1.17549e-38 to 3.40282e+38Vrste podataka i njihovi makronaredbe raspona
Popis nekih makronaredbi tipa podataka spominje se u nastavku:
| Vrsta podataka | Raspon | Makro za min vrijednost | Makro za maksimalnu vrijednost |
|---|---|---|---|
| čar | -128 do +127 | Char_min | Char_max |
| Kratki char | -128 do +127 | Schar_min | Schar_max |
| nepotpisani char | 0 do 255 | - | Letenje_max |
| kratki int | -32768 do +32767 | Shrt_min | Shrt_max |
| nepotpisani kratki int | 0 do 65535 | - | Ushrt_max |
| int | -2147483648 do +2147483647 | Int_min | Int_max |
| nepotpisani int | 0 do 4294967295 | - | Uint_max |
| dugi int | -9223372036854775808 do +922372036854775807 | Long_min | Long_max |
| nepotpisani dugi int | 0 do 1844674407370951615 | - | Usong_Max |
| Dugi dugi int | -9223372036854775808 do +922372036854775807 | Brod_min | Llong_max |
| nepotpisani dugi dugi int | 0 do 1844674407370951615 | - | Ullong_max |
| plovka | 1.17549E-38 do 3.40282E+38 | Flt_min | Flt_max |
| Ploviti (negativan) | -1.17549E -38 do -3.40282E+38 | -Lt_min | -Flt_max |
| dvostruko | 2.22507E-308 do 1.79769E+308 | Dbl_min | Dbl_max |
| dvostruko (negativno) | -2.22507E -308 do -1.79769E+308 | -Dbl_min | -Dbl_max |
Ograničenja vrste podataka u modernom C ++
Gornji makro pristup za gornju i donju granicu tipa podataka je stari C jezični pristup nasljeđen C ++. Ali C ++ također imaju vlastitu metodu za pružanje programerima iste informacije.
C ++ nudi numerički_limits <> Predložak klase kao moderna alternativa ovim makronaredbama. Ovaj predložak pruža objektni orijentirani pristup za pristup ograničenjima vrste podataka. Definirana je unutar
Pogledajmo primjer:
C++ #include #include using namespace std ; int main () { // Displaying ranges with the help of macros cout < < 'short int ranges from: ' < < numeric_limits < short int >:: min () < < ' to ' < < numeric_limits < short int >:: max () < < endl ; cout < < ' n int ranges from: ' < < numeric_limits < int >:: min () < < ' to ' < < numeric_limits < int >:: max () < < endl ; cout < < ' n long int ranges from: ' < < numeric_limits < long >:: min () < < ' to ' < < numeric_limits < long >:: max () < < endl ; cout < < ' n float ranges from: ' < < numeric_limits < float >:: min () < < ' to ' < < numeric_limits < float >:: max () < < endl ; return 0 ; }
Izlaz
short int ranges from: -32768 to 32767
int ranges from: -2147483648 to 2147483647
long int ranges from: -9223372036854775808 to 9223372036854775807
float ranges from: 1.17549e-38 to 3.40282e+38Preporučuje se koristiti ovaj pristup kako biste pronašli gornju i donju granicu tipa podataka umjesto makronaredbi jer je sigurniji i čitljiviji tip u usporedbi s pristupom utemeljenom na makro.