Datatype varierer og deres makroer i C ++
De fleste af de tidspunkter inden for konkurrencedygtig programmering er der et behov for at tildele variablen den maksimale eller minimumsværdi, som datatypen kan indeholde, men at huske et så stort og præcist antal kommer til at være et vanskeligt job. Derfor har C ++ visse makroer til at repræsentere disse tal, så disse kan tildeles direkte til variablen uden faktisk at skrive hele nummeret.
De
Lad os 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 ; }
Produktion
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 række makroer
En liste over nogle af makroerne af datatypen er nævnt nedenfor:
| Datatype | Rækkevidde | Makro til minværdi | Makro til maksimal værdi |
|---|---|---|---|
| char | -128 til +127 | CHAR_MIN | Char_max |
| Kort char | -128 til +127 | Schar_min | Schar_max |
| usigneret char | 0 til 255 | -- | Flying_max |
| kort int | -32768 til +32767 | SHRT_MIN | SHRT_MAX |
| usigneret kort int | 0 til 65535 | -- | Ushrt_max |
| int | -2147483648 til +2147483647 | Int_min | Int_max |
| usigneret int | 0 til 4294967295 | -- | Uint_max |
| lang int | -9223372036854775808 til +9223372036854775807 | Long_min | Long_max |
| usigneret lang int | 0 til 18446744073709551615 | -- | Ussang_max |
| lang lang int | -9223372036854775808 til +9223372036854775807 | Ship_min | Llong_max |
| usigneret lang lang int | 0 til 18446744073709551615 | -- | Ullong_max |
| flyde | 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 |
Datatypegrænser i moderne C ++
Ovenstående makro -tilgang til de øvre og nedre grænser for datatypen er den gamle C -sprogtilgang, der er arvet af C ++. Men C ++ har også sin egen metode til at give programmerere de samme oplysninger.
C ++ tilbyder numeric_limits <> Klasseskabelon som et moderne alternativ til disse makroer. Denne skabelon giver en mere objektorienteret tilgang til adgang til datatypegrænser. Det er defineret inde i
Lad os 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 ; }
Produktion
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 at bruge denne tilgang til at finde de øvre og nedre grænser for datatypen i stedet for makroer, da den er mere type sikker og læsbar sammenlignet med den makrobaserede tilgang.