Rozsahy typu údajov a ich makrá v C ++
Väčšinou v konkurenčnom programovaní je potrebné priradiť premennú maximálnu alebo minimálnu hodnotu, ktorú môže dátový typ drží, ale pamätať si, že také veľké a presné číslo sa stane zložitou úlohou. Preto má C ++ určité makrá, ktoré tieto čísla reprezentujú, takže ich môžu byť priamo priradené k premennej bez toho, aby v skutočnosti zadali celé číslo.
Ten
Pozrime sa na príklad:
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 ; }
Výstup
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+38Typy údajov a ich makrá s rozsahom
Zoznam niektorých makier dátového typu je uvedený nižšie:
| Typ údajov | Rozsah | Makro pre minimálnu hodnotu | Makro pre maximálnu hodnotu |
|---|---|---|---|
| char | -128 až +127 | Char_min | Char_max |
| krátky char | -128 až +127 | Schar_min | Schar_max |
| nepodpísaný | 0 až 255 | - | Flying_max |
| krátka int | -32768 až +32767 | Shrt_min | Shrt_max |
| nepodpísané krátke int | 0 až 65535 | - | Ushrt_max |
| int | -2147483648 až +2147483647 | Int_min | Int_max |
| nepodpísaný int | 0 až 4294967295 | - | Uint_max |
| dlhý int | -922337203685475808 až +9223372036854775807 | Long_min | Long_max |
| nepodpísané dlhé int | 0 až 18446744073709551615 | - | Usong_max |
| dlhý int | -922337203685475808 až +9223372036854775807 | Loď | Llong_max |
| nepodpísané dlhé dlhé int | 0 až 18446744073709551615 | - | Ullong_max |
| plávať | 1,17549E-38 až 3,40282E+38 | Flt_min | Flt_max |
| float (negatívny) | -1.17549e -38 až -3,40282e+38 | -Lt_min | -Flt_max |
| zdvojnásobiť | 2.22507e-308 až 1,79769e+308 | Dbl_min | Dbl_max |
| dvojitý (negatívny) | -2.22507e -308 až -1.79769e+308 | -Dbl_min | -Dbl_max |
Limity dátového typu v modernom C ++
Vyššie uvedený makro prístup k horným a dolným limitom dátového typu je starý prístup jazyka C zdedený C ++. Ale C ++ má tiež svoju vlastnú metódu na poskytovanie rovnakých informácií programátorom.
C ++ ponúka numeric_limits <> Šablóna triedy ako moderná alternatíva k týmto makrám. Táto šablóna poskytuje objektovo orientovanejší prístup na prístup k limitom dátového typu. Je definovaný vo vnútri
Pozrime sa na príklad:
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 ; }
Výstup
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+38Odporúča sa použiť tento prístup na nájdenie horných a dolných limitov dátového typu namiesto makier, pretože je bezpečný a čitateľný v porovnaní s prístupom založený na makro.