Existe-t-il une bibliothèque multiplate-forme C ++ qui me fournit un nombre entier maximal portable?
Je veux déclarer:
const int MAX_NUM = /* call some library here */;
J'utilise MSVC 2008 non géré.
Existe-t-il une bibliothèque multiplate-forme C ++ qui me fournit un nombre entier maximal portable?
Je veux déclarer:
const int MAX_NUM = /* call some library here */;
J'utilise MSVC 2008 non géré.
Dans la norme C++ de la bibliothèque de l'en-tête <limits>
,, vous trouverez:
std::numeric_limits<int>::max()
Qui va vous dire la valeur maximale qui peut être stockée dans une variable de type int
. numeric_limits
est un modèle de classe, et vous pouvez passer à l'un des types numériques à obtenir la valeur maximale qu'ils peuvent tenir.
L' numeric_limits
modèle de classe a beaucoup d' autres informations sur les types numériques ainsi.
Sur HP UX avec compilateur aCC:
#include <iostream>
#include <limits>
using namespace std;
int main () {
if (sizeof(int)==sizeof(long)){
cout<<"sizeof int == sizeof long"<<endl;
} else {
cout<<"sizeof int != sizeof long"<<endl;
}
if (numeric_limits<int>::max()==numeric_limits<long>::max()){
cout<<"INT_MAX == lONG_MAX"<<endl;
} else {
cout<<"INT_MAX != LONG_MAX"<<endl;
}
cout << "Maximum value for int: " << numeric_limits<int>::max() << endl;
cout << "Maximum value for long: " << numeric_limits<long>::max() << endl;
return 0;
}
Il imprime:
sizeof int == sizeof long
INT_MAX! = LONG_MAX
J'ai vérifié les deux types int et long sont 4 octets. La page de manuel limites (5) indique que INT_MAX et LONG_MAX sont tous deux 2147483647
http://nixdoc.net/man-pages/HP-UX/man5/limits.5.html
Donc, conclusion std :: numeric_limits <type> :: n'est pas portable.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.