Question

Dans limits.h, il y a #defines pour INT_MAX et INT_MIN (et SHRT_ * et * LONG_ et ainsi de suite), mais seulement UINT_MAX.

Devrais-je me définir UINT_MIN? Est-0 (zéro positif) une valeur portable?

Était-ce utile?

La solution

Si vous voulez être « typesafe » vous pouvez utiliser 0U, donc si vous l'utilisez dans une expression que vous aurez les promotions correctes à unsigned.

Autres conseils

Il est un entier non signé - par définition la plus petite valeur possible est 0. Si vous voulez une justification en plus juste sens commun, le norme dit:

  

6.2.6.2 types Entier

     
      
  1. Pour les types d'entiers non signés autres que unsigned char, les bits de la représentation de l'objet est divisé en deux groupes: les bits de valeur et des bits de remplissage (il ne doivent pas être l'un quelconque de ceux-ci). S'il y a N bits de valeur, chaque bit représente une puissance différente de 2 comprise entre 1 et 2 ^ ( N -1), de sorte que les objets de ce type doit pouvoir de représenter des valeurs de 0 à 2 ^ ( N -1) en utilisant une représentation binaire pur; cela doit être connu comme la représentation de la valeur. Les valeurs de tous les bits de remplissage ne sont pas spécifiés.
  2.   

Vous pouvez utiliser std::numeric_limits<unsigned int>::min().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top