Adattípus -tartományok és makrók C ++ -ban
A versenyképes programozás legtöbb alkalommal kell hozzárendelni azt a maximális vagy minimális értéket, amelyet az adattípus megtarthat, de egy ilyen nagy és pontos szám emlékezete nehéz feladat. Ezért a C ++ rendelkezik bizonyos makrókkal, amelyek ábrázolják ezeket a számokat, hogy ezeket közvetlenül hozzárendelhessék a változóhoz anélkül, hogy ténylegesen beírnák az egész számot.
A
Vessen egy pillantást egy példára:
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 ; }
Kibocsátás
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+38Adattípusok és azok tartománymakrók
Az alábbiakban említjük az egyes makrók adattípusának listáját:
| Adattípus | Hatótávolság | Makró minér értékre | Makró a maximális értékhez |
|---|---|---|---|
| csészék | -128 -+127 | Char_min | Char_max |
| rövid székes | -128 -+127 | Schar_min | Schar_max |
| alá nem írt char | 0-255 | -- | Flying_max |
| rövid int | -32768 -+32767 | Shrt_min | SHRT_MAX |
| alá nem írt rövid int | 0–65535 | -- | Ushrt_max |
| intert | -2147483648 -+2147483647 | Int_min | Int_max |
| alá nem írt Int | 0 -tól 4294967295 | -- | Uint_max |
| hosszú int | -9223372036854775808 -+922337203685475807 | Long_min | Long_max |
| alá nem írt hosszú Int | 0 -tól 18446744073709551615 | -- | Usong_max |
| hosszú hosszú int | -9223372036854775808 -+922337203685475807 | Ship_min | Llong_max |
| alá nem írt hosszú hosszú int | 0 -tól 18446744073709551615 | -- | Ullong_max |
| úszó | 1.17549E-38-3.40282E+38 | Flt_min | FLT_MAX |
| úszó (negatív) | -1.17549E -38 --30282E+38 | -Lt_min | -Flt_max |
| kettős | 2.22507E-308-1.79769E+308 | Dbl_min | Dbl_max |
| dupla (negatív) | -2.22507E -308 --1.79769E+308 | -Dbl_min | -DBL_MAX |
Adattípus -korlátok a modern C ++ -ban
Az adattípus felső és alsó határainak fenti makro megközelítése a régi C nyelvű megközelítés, amelyet a C ++ örököl. De a C ++ rendelkezik saját módszerrel a programozók ugyanazon információk biztosítására.
C ++ kínálja a numeric_limits <> osztálysablon, mint ezeknek a makróknak a modern alternatívája. Ez a sablon objektum-orientáltabb megközelítést biztosít az adattípus-korlátok eléréséhez. A
Vessen egy pillantást egy példára:
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 ; }
Kibocsátás
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+38Javasoljuk, hogy ezt a megközelítést alkalmazzák az adattípus felső és alsó határának a makrók helyett, mivel ez biztonságosabb és olvashatóbb a makro-alapú megközelítéshez képest.