According to ANSI (section 2.2.4.2), the values below must be usable by
#if preprocessing directives. Additionally, the expression must have the
same type as would an expression that is an object of the corresponding
type converted according to the integral promotions. The subtraction for
INT_MIN and LONG_MIN is so the value is not unsigned; 2147483648 is an
unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2).
These numbers work for pcc as well. The UINT_MAX and ULONG_MAX values
are written as hex so that GCC will be quiet about large integer constants.