LIMITS(3) | Library Functions Manual | LIMITS(3) |
limits
—
#include <limits.h>
<limits.h>
header defines
various compile-time and runtime limits. These can be grouped into three
categories:
The <limits.h>
header has been standardized by at least three entities.
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.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
)
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.
Richard W. Stevens and Stephen A. Rago, Advanced Programming in the UNIX Environment, Addison-Wesley, Second Edition, 2005.
August 9, 2011 | NetBSD 9.2 |