Datatypeområder og deres makroer i C ++
De fleste av tidene i konkurrerende programmering er det behov for å tilordne variabelen den maksimale eller minimumsverdien som datatypen kan inneholde, men å huske et så stort og presist antall kommer ut som en vanskelig jobb. Derfor har C ++ visse makroer for å representere disse tallene slik at disse kan tilordnes direkte til variabelen uten å faktisk skrive hele tallet.
De
La oss se på et eksempel:
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 ; }
Produksjon
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+38Datatyper og deres rekkevidde makroer
En liste over noen av datatypemakroene er nevnt nedenfor:
| Datatype | Spekter | Makro for min verdi | Makro for maks verdi |
|---|---|---|---|
| røye | -128 til +127 | Char_min | Char_max |
| Kort røye | -128 til +127 | Schar_min | Schar_max |
| usignert røye | 0 til 255 | - | Flying_max |
| Kort int | -32768 til +32767 | Shrt_min | Shrt_max |
| usignert kort int | 0 til 65535 | - | Ushrt_max |
| int | -2147483648 til +2147483647 | Int_min | Int_max |
| usignert int | 0 til 4294967295 | - | Uint_max |
| Lang int | -9223372036854775808 til +9223372036854775807 | Long_min | Long_max |
| usignert lang int | 0 til 18446744073709551615 | - | Usong_max |
| Lang lang int | -9223372036854775808 til +9223372036854775807 | Skip_min | Llong_max |
| usignert lang lang int | 0 til 18446744073709551615 | - | Ullong_Max |
| flyte | 1.17549E-38 til 3.40282E+38 | Flt_min | Flt_max |
| Float (negativ) | -1.17549E -38 til -3.40282e+38 | -Lt_min | -Flt_max |
| dobbelt | 2.22507E-308 til 1.79769E+308 | Dbl_min | Dbl_max |
| Dobbelt (negativ) | -2.22507e -308 til -1.79769e+308 | -Dbl_min | -Dbl_max |
Datatypegrenser i moderne C ++
Ovennevnte makrotilnærming for de øvre og nedre grensene for datatypen er den gamle C -språktilnærmingen som er arvet av C ++. Men C ++ har også sin egen metode for å gi programmerere den samme informasjonen.
C ++ tilbyr numeric_limits <> Klassemal som et moderne alternativ til disse makroene. Denne malen gir en mer objektorientert tilnærming for å få tilgang til datatypens grenser. Det er definert inne i
La oss se på et eksempel:
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 ; }
Produksjon
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+38Det anbefales å bruke denne tilnærmingen for å finne de øvre og nedre grensene for datatypen i stedet for makroer, da den er mer type trygt og lesbar sammenlignet med den makrobaserte tilnærmingen.