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