logo

Datatypområden och deras makron i C ++

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 rubrikfil i C ++ definierar makron som representerar de övre och nedre gränserna för heltal datatyper och Definierar makronen för flottör och dubbla gränser. Dessa makron tillåter dig att enkelt tilldela dessa extrema värden till variabler utan att manuellt skriva ut dem.



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 rubrikfil.

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.