Listing 2

/* test limits macros
 * copyright (c) 1991 by P.J. Plauger
 */
#include <limits.h>
#include <stdio.h>

/* test basic properties of limits.h macros
 */
int main()
  {
#if CHAR_BIT < 8 || CHAR_MAX < 127 || 0 < CHAR_MIN \
  || CHAR_MAX != SCHAR_MAX && CHAR_MAX != UCHAR_MAX
#error bad char properties
#endif
#if INT_MAX < 32767 || -32767 < INT_MIN \
  || INT_MAX < SHRT_MAX
#error bad int properties
#endif
#if LONG_MAX < 2147483647 \
  || -2147483647 < LONG_MIN \
  || LONG_MAX < INT_MAX
#error bad long properties
#endif
#if MB_LEN_MAX < 1
#error bad MB_LEN_MAX
#endif
#if SCHAR_MAX < 127 || -127 < SCHAR_MIN
#error bad signed char properties
#endif
#if SHRT_MAX < 32767 || -32767 < SHRT_MIN \
  || SHRT_MAX < SCHAR_MAX
#error bad short properties
#endif
#if UCHAR_MAX < 255 || UCHAR_MAX <= 2 * SCHAR_MAX
#error bad unsigned char properties
#endif
#if UINT_MAX < 65535 || UINT_MAX <= 2 * INT_MAX \
  || UINT_MAX < USHRT_MAX
#error bad unsigned int properties
#endif
#if ULONG_MAX < 4294967295 \
  || ULONG_MAX <= 2 * LONG_MAX \
  || ULONG_MAX < UINT_MAX
#endif
#if USHRT_MAX < 65535 || USHRT_MAX <= 2 * SHRT_MAX \
  || USHRT_MAX < UCHAR_MAX
#error bad unsigned short properties
#endif
  puts("SUCCESS testing <limits.h>");
  return (0);
  }