Ton interprétation de C99 est fausse.
Clause 7.18.2, paragraphe 2:
Its implementation-defined value shall be equal to or greater in magnitude (absolute value) than the corresponding value given below, with the same sign, except where stated to be exactly the given value.
Or "exactly" est écrit seulement pour les INT
N_MIN, et dans ce cas la valeur est spécifiée à "exactly -(2
N-1)". Pour les autres INT*_MIN, les valeurs sont spécifiées comme étant <= -(2
N-1-1) (>= en valeur absolue), donc une valeur de -(2
N-1) est conforme. De plus, cette valeur est logique, correcte (c'est le vrai minimum du type), cohérente avec les autres *_MIN et compatible avec d'autres systèmes (regarde par exemple le
stdint.h de GNU/Linux). Donc votre implémentation est fausse, celle de Conrad est correcte.