De flesta gånger i konkurrensprogrammering finns det ett behov av att tilldela variabeln det maximala eller minimivärde som datatyp kan innehålla men att komma ihåg ett så stort och exakt antal kommer att vara ett svårt jobb. Därför har C ++ vissa makron för att representera dessa nummer så att dessa kan direkt tilldelas variabeln utan att skriva hela numret.
De
Låt oss ta en titt på ett exempel:
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
alfabetet efter nummer
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 och deras makron
En lista över några av datatypsmakronen nämns nedan:
Datatyp | Räckvidd | Makro för minvärde | Makro för maxvärde |
---|---|---|---|
röding | -128 till +127 | Char_min | Char_max |
kort char | -128 till +127 | Schar_min | Schar_max |
osignerad char | 0 till 255 | - | Flygande_max |
kort int | -32768 till +32767 | Shrt_min | Shrt_max |
osignerad kort int | 0 till 65535 | - | Ushrt_max |
int | -2147483648 till +2147483647 | Int_min | Int_max |
osignerad int | 0 till 4294967295 | - | Uint_max |
long int | -9223372036854775808 till +9223372036854775807 | Long_min jlist | Long_max |
osignerad lång int | 0 till 18446744073709551615 | - | Usong_max |
Lång lång int | -9223372036854775808 till +9223372036854775807 | Skepp_min | Llong_max |
osignerad lång lång int | 0 till 18446744073709551615 | - | Ullong_max |
flyta | 1.17549E-38 till 3.40282E+38 | FLT_MIN | Flt_max |
float (negativ) | -1.17549e -38 till -3.40282e+38 | -FLT_MIN | -Flt_max |
dubbel | 2.22507E-308 till 1.79769E+308 | Dbl_min | Dbl_max |
Dubbel (negativ) | -2.22507E -308 till -1.79769E+308 | -Dbl_min virtuellt minne | -Dbl_max |
Datatypsgränser i modern C ++
Ovanstående makrometod för de övre och nedre gränserna för datatypen är den gamla C -språkmetoden som ärvts av C ++. Men C ++ har också sin egen metod för att ge programmerare samma information.
C ++ erbjuder numeric_limits<> Klassmall som ett modernt alternativ till dessa makron. Den här mallen ger ett mer objektorienterat tillvägagångssätt för åtkomst till datatypsgränser. Det definieras inuti
Låt oss ta en titt på ett exempel:
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 rekommenderas att använda detta tillvägagångssätt för att hitta de övre och nedre gränserna för datatypen istället för makron eftersom den är mer typsäker och läsbar jämfört med det makrobaserade tillvägagångssättet.