Est-il un portable de façon à définir INT_MAX?

J'ai trouvé les définitions suivantes dans le fichier /usr/include/limites.h:

# define INT_MIN (-INT_MAX - 1)

# define INT_MAX 2147483647

Aussi, il semble que tous les XXX_MAX est dans ce fichier d'en-tête sont explicitement définis à partir d'une constante numérique.

Je me demande si il est de façon portable (contre les différentes longueurs de mot sur les plates-formes) pour définir une INT_MAX ?

J'ai essayé le suivant:

~((int)-1)

Mais cela semble incorrect.

Une courte explication est aussi très apprécié.

  • ~((int)-1) est probablement zéro.
  • Oh, oui! Vous êtes de droite. Mais je ne comprends pas pourquoi. Pourriez-vous expliquer un petit peu? Merci beaucoup!
  • Le motif de bits pour -1 est tous dans une à deux, le système du complément. Le complément (~) d'un tout-un mot est une des zéros mot.
  • Génial! Merci!!!! @CarlNorum
  • Pourquoi s'en faire, puisque <limits.h> est spécifié dans le C99 & C11 & normes de POSIX ?
InformationsquelleAutor Hatrick | 2013-07-23