Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.

LIMITS(3)                  Library Functions Manual                  LIMITS(3)

     limits - standard limits

     #include <limits.h>

     The <limits.h> header defines various compile-time and runtime limits.
     These can be grouped into three categories:

           1.   Compile-time limits defined in a header file.

           2.   Runtime system limits that are not associated with a file or
                directory; see sysconf(3).

           3.   Runtime limits that are associated with a file or directory;
                see pathconf(2).

     The <limits.h> header has been standardized by at least three entities.

   ISO Limits
     The limits defined by the ISO/IEC 9899:1999 ("ISO C99") standard are all
     compile-time limits.  The numerical (integer) limits are:

           Constant       Type                    Minimum value
           CHAR_BIT       char                    8
           SCHAR_MAX      signed char             127
           SCHAR_MIN      signed char            -127
           UCHAR_MAX      unsigned char           255

           INT_MAX        int                     32767
           INT_MIN        int                    -32767
           UINT_MAX       unsigned int            65535

           SHRT_MIN       short                  -32767
           SHRT_MAX       short                   32767
           USHRT_MAX      unsigned short          65535

           LONG_MAX       long int                2147483647
           LONG_MIN       long int               -2147483647
           ULONG_MAX      unsigned long int       4294967295

           LLONG_MAX      long long int           9223372036854775807
           LLONG_MIN      long long int          -9223372036854775807
           ULLONG_MAX     unsigned long long int  18446744073709551615

           MB_LEN_MAX     -                      1

     All listed limits may vary across machines and operating systems.  The
     standard guarantees only that the implementation-defined values are equal
     or greater in absolute value to those shown.  The values permit a system
     with 16-bit integers using one's complement arithmetic.

     Depending whether the system defines char as signed or unsigned, the
     maximum and minimum values are:

           Constant       Type                   Minimum value
           CHAR_MAX       char                   either SCHAR_MAX or UCHAR_MAX
           CHAR_MIN       char                   either SCHAR_MIN or 0

     The two special cases, CHAR_BIT and MB_LEN_MAX, define the number of bits
     in char and the maximum number of bytes in a multibyte character
     constant, respectively.

   POSIX Limits
     The POSIX.1 standard specifies numerous limits related to the operating
     system.  For each limit, a separate constant prefixed with "_POSIX_"
     defines the lowest value that the limit is allowed to have on any POSIX
     compliant system.  For instance, _POSIX_OPEN_MAX defines the minimum
     upper bound permitted by POSIX for the number of files that a single
     process may have open at any time.  This ensures that a portable program
     can safely reach these limits without prior knowledge about the actual
     limits used in a particular system.

     As the limits are not necessary invariant, pathconf(2) and sysconf(3)
     should be used to determine the actual value of a limit at runtime.  The
     manual pages of these two functions also contain a more detailed
     description of the limits available in NetBSD.

   XSI Limits
     Also the X/Open System Interface Extension (XSI) specifies few limits.
     In NetBSD these are limited to LONG_BIT (the number of bits in long),
     WORD_BIT (the number of bits in a "word"), and few limits related to
     float and double.

     getconf(1), pathconf(2), sysconf(3), types(3), unistd(3)

     Richard W. Stevens and Stephen A. Rago, Advanced Programming in the UNIX
     Environment, Addison-Wesley, Second Edition, 2005.

NetBSD 10.99                    August 9, 2011                    NetBSD 10.99