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 << 'nnshort int ranges from: ' << SHRT_MIN << ' to ' << SHRT_MAX << endl; cout << 'nint ranges from: ' << INT_MIN << ' to ' << INT_MAX << endl; cout << 'nlong int ranges from: ' << LONG_MIN << ' to ' << LONG_MAX << endl; cout << 'nfloat ranges from: ' << FLT_MIN << ' to ' << FLT_MAX << endl; return 0; }
Produktion
hvordan man omdøber en mappe linux
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+38
Datatyper 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 navn by i usa | 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 hvilken størrelse er min skærm | 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 << 'nint ranges from: ' << numeric_limits<int>::min() << ' to ' << numeric_limits<int>::max() << endl; cout << 'nlong int ranges from: ' << numeric_limits<long>::min() << ' to ' << numeric_limits<long>::max() << endl; cout << 'nfloat 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+38
Det 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.