36 votes

C ++: entier maximum

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

93voto

James McNellis Points 193607

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.

10voto

Lukáš Lalinský Points 22537

Voir limits.h (C) ou climits (C ++). Dans ce cas, vous voudriez la constante INT_MAX .

3voto

Je sais que la réponse a été donnée, mais je veux juste savoir depuis mes vieux jours, je le faisais

 int max = (unsigned int)-1
 

Cela donnera-t-il la même chose que

 std::numeric_limits<int>::max()
 

?

1voto

yet Points 333

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

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.

Powered by:

X