O'Reilly logo

C Pocket Reference by Ulla Kirch-Prinz, Peter Prinz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Numerical Limits and Number Classification

When working with C's various numeric types, it's important to understand the range of values that each type can hold.

Value Ranges of Integer Types

The value ranges of the integer types are documented in the header file limits.h . The constants, listed in Table 1-25, indicate the largest and smallest values that can be represented by the given type.

Table 1-25. Limits of the integer types

Type

Minimum

Maximum

Maximum of the unsigned type

char
CHAR_MIN
CHAR_MAX
UCHAR_MAX
signed char
SCHAR_MIN
SCHAR_MAX
short
SHRT_MIN
SHRT_MAX
USHRT_MAX
int
INT_MIN
INT_MAX
UINT_MAX
long
LONG_MIN
LONG_MAX
ULONG_MAX
long long(*)
LLONG_MIN(*)
LLONG_MAX(*)
ULLONG_MAX(*)

If char is interpreted as signed, then CHAR_MIN is equal to SCHAR_MIN and CHAR_MAX is equal to SCHAR_MAX. If not, then CHAR_MIN is equal to 0 and CHAR_MAX is equal to UCHAR_MAX.

In addition to the constants listed in Table 1-25, limits.h also contains the following:

CHAR_BIT

The number of bits in a byte (usually 8)

MB_LEN_MAX

The maximum number of bytes in a multibyte character

In the header file stdint.h (*), constants are also defined to document the minimum and maximum values of the types wchar_t, wint_t, size_t, ptrdiff_t, and sig_atomic_t, and of the fixed-width integer types, such as int_least32_t. The names of these constants are formed from the type names as follows: the type name is written all in capital letters, and the suffix _t is replaced by ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required