Calculer et utiliser le maximum de valeur de uint32_t

Je sais que UINT32_MAX existe, mais je n'ai pas été capable de l'utiliser. J'ai essayé printf("%d\n", UINT32_MAX); et l'imprimer -1. À l'aide de %ld au lieu de %d m'a présenté avec l'erreur que UINT32_MAX est de type unsigned int et les besoins %d qu'à l'imprimer.

S'il vous plaît aider, ce que j'idéalement veux, c'est un macro/enum qui détient la valeur maximale de word_t qui est un type défini par moi qui est actuellement uint32_t.

J'espère que j'ai précisé ce que je veux, si non n'hésitez pas à demander.

MODIFIER

J'ai oublié de dire ce que je suis en train d'essayer de faire. Tout cela sera utilisé pour définir un tableau d'entiers à leur valeur maximale, parce que le tableau d'entiers est en fait une image bitmap qui vont mettre tous les bits à 1.

  • Si vous souhaitez définir un entier non signé de tous les bits à 1, alors il suffit d'attribuer -1 à elle. Le type n'a pas d'importance (tant qu'il est non signé), la représentation des entiers signés sur la mise en œuvre n'a pas d'importance, et vous n'avez pas besoin de connaître le nom de la macro pour la bonne valeur max (ce qui les rend plus facile à traiter avec des typedefs susceptible de changer dans le futur).
  • Jessop: Est-ce tout simplement accidentelle comportement ou pouvez-vous vraiment compter sur elle?
  • il est garanti par la norme. Signé-à-unsigned de conversion est 6.3.1.3/2, et la représentation des unsigned int types est 6.2.6.2/1 (bien qu'en réalité vous ne vous inquiétez pas à propos de la représentation de stockage, vous venez de soins que -1 est converti en unsigned par "ajouter un de plus que la valeur maximale qui peut être représenté dans le nouveau type", et donc -1 converti à tout type non signé est UTYPE_MAX).
  • Je sais qu'il peut être inutile de parler d'une "bonne" façon... mais qui ne devrait pas ~0 de mieux que de -1... je veux dire, ~0 est ce que vous voulez vraiment, -1 donne juste ~0 comme un effet secondaire de l'addition/soustraction.
InformationsquelleAutor orlp | 2011-03-04