Els intervals de tipus de dades i les seves macros a C ++

La majoria de les vegades en programació competitiva és necessari assignar a la variable el valor màxim o mínim que pot contenir el tipus de dades, però recordar un nombre tan gran i precís resulta que és un treball difícil. Per tant, C ++ té certes macros per representar aquests números de manera que es puguin assignar directament a la variable sense escriure el nombre sencer.

El El fitxer de capçalera en C ++ defineix macros que representen els límits superiors i inferiors dels tipus de dades enter i Defineix les macros per flotar i dobles límits. Aquestes macros us permeten assignar fàcilment aquests valors extrems a variables sense escriure -les manualment.

Mirem un exemple:

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  ;   }   


Producció

 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

Tipus de dades i les seves macros de gamma

A continuació, s'esmenten una llista d'algunes de les macros del tipus de dades:

Tipus de dades

Distància

Macro per a valor min

Macro per al valor màxim

encar

-128 a +127

Char_min

Char_max

curt carbó

-128 a +127

Schar_min

Schar_max

char sense signar

De 0 a 255

-

Flying_Max

curt int

-32768 a +32767

Shrt_min

Shrt_max

inignat curt int

De 0 a 65535

-

Ushrt_max

int

-2147483648 a +2147483647

Int_min

Int_max

inignat int

De 0 a 4294967295

-

Uint_max

INT llarg

-9223372036854775808 a +9223372036854775807

Long_min

Long_max

inignat llarg int

0 a 18446744073709551615

-

Usong_max

llarg int

-9223372036854775808 a +9223372036854775807

Ship_min

Llong_max

inignat llarg llarg int

0 a 18446744073709551615

-

Ullong_max

surar

1.17549e-38 a 3.40282e+38

Flt_min

Flt_max

Float (negatiu)

-1.17549e -38 a -3.40282e+38

-Lt_min

-Flt_max

doble

2.22507E-308 a 1.79769E+308

Dbl_min

Dbl_max

doble (negatiu)

-2.22507E -308 a -1.79769e+308

-Dbl_min

-Dbl_max

Límits de tipus de dades en C ++ modern

L’enfocament macro anterior per als límits superiors i inferiors del tipus de dades és l’antic enfocament del llenguatge C heretat per C ++. Però C ++ també té el seu propi mètode per proporcionar als programadors la mateixa informació.

C ++ ofereix el numeric_limits <> Plantilla de classe com a alternativa moderna a aquestes macros. Aquesta plantilla proporciona un enfocament més orientat a objectes per accedir als límits del tipus de dades. Es defineix dins del fitxer de capçalera.

Mirem un exemple:

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  ;   }   


Producció

 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

Es recomana utilitzar aquest enfocament per trobar els límits superiors i inferiors del tipus de dades en lloc de macros, ja que és més segur i llegible en comparació amb l’enfocament basat en macro.