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
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+38Tipus 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
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+38Es 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.