logo

Plages de types de données et leurs macros en C++

La plupart du temps, dans la programmation compétitive, il est nécessaire d'attribuer à la variable la valeur maximale ou minimale que le type de données peut contenir, mais se souvenir d'un nombre aussi grand et précis s'avère être une tâche difficile. Par conséquent, C++ dispose de certaines macros pour représenter ces nombres afin que ceux-ci puissent être directement affectés à la variable sans réellement saisir le nombre entier.

Le Le fichier d'en-tête en C++ définit des macros qui représentent les limites supérieure et inférieure des types de données entiers et définit les macros pour les limites flottantes et doubles. Ces macros vous permettent d'attribuer facilement ces valeurs extrêmes à des variables sans les saisir manuellement.



Jetons un coup d'œil à 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 << '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; } 


Sortir

objet en programmation Java
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

Types de données et leurs macros de plage

Une liste de certaines macros de types de données est mentionnée ci-dessous :



Type de données

Gamme

Macro pour la valeur minimale



Macro pour la valeur maximale

carboniser

-128 à +127

Char_min

CHAR_MAX

caractère court

-128 à +127

SCHAR_MIN

SCHAR_MAX

caractère non signé

0 à 255

--

Vol_max

entier court

-32768 à +32767

SHRT_MIN

SHRT_MAX

entier court non signé

0 à 65535

--

USHRT_MAX

int

-2147483648 à +2147483647

INT_MIN

tailles de texte en latex

INT_MAX

entier non signé

0 au 4294967295

--

UINT_MAX

long int

-9223372036854775808 à +9223372036854775807

LONG_MIN

LONG_MAX

entier long non signé

0 à 18446744073709551615

--

Usong_Max

long long int

-9223372036854775808 à +9223372036854775807

Navire_min

LLONG_MAX

non signé long long int

0 à 18446744073709551615

--

ULLONG_MAX

flotter

1.17549e-38 à 3.40282e+38

Flt_min

FLT_MAX

flotteur (négatif)

-1.17549e-38 à -3.40282e+38

-Lt_min

-FLT_MAX

double

2.22507e-308 à 1.79769e+308

DBL_MIN

chaîne.format

DBL_MAX

double (négatif)

-2.22507e-308 à -1.79769e+308

-DBL_MIN

-DBL_MAX

Limites des types de données dans le C++ moderne

L'approche macro ci-dessus pour les limites supérieure et inférieure du type de données est l'ancienne approche du langage C héritée du C++. Mais C++ dispose également de sa propre méthode pour fournir aux programmeurs les mêmes informations.

C++ offre le limites_numériques<> modèle de classe comme alternative moderne à ces macros. Ce modèle fournit une approche plus orientée objet pour accéder aux limites des types de données. Il est défini à l'intérieur du fichier d'en-tête.

Jetons un coup d'œil à 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 << '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; } 


Sortir

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

Il est recommandé d'utiliser cette approche pour trouver les limites supérieure et inférieure du type de données au lieu des macros, car elle est plus sûre et plus lisible que l'approche basée sur les macros.