C Programming/limits.h
limits.h includes definitions of the characteristics of common variable types. The values are implementation specific, but may not be of lower magnitude than certain specified values in a conforming C implementation.
The C99 standard also specifies the <stdint.h> header file, which provides names and limits for explicitly-sized platform-independent integer datatypes (e.g. int32_t for a 32-bit signed integer).
Member constants [ edit | edit source ]
The «minimum-magnitude value» column is the minimum possible magnitude for this constant as specified by the standard. In particular, _MIN values represent the minimum magnitude representable in the rarely-used one’s complement and sign-magnitude forms. Most implementations will have larger magnitudes for at least some of these numbers. For instance:
Name already in use
cpp-docs / docs / c-language / cpp-integer-limits.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
C and C++ Integer Limits
Microsoft Specific
The limits for integer types in C and C++ are listed in the following table. These limits are defined in the C standard header file <limits.h> . The C++ Standard Library header <limits> includes <climits> , which includes <limits.h> .
Microsoft C also permits the declaration of sized integer variables, which are integral types of size 8-, 16-, 32- or 64-bits. For more information on sized integers in C, see Sized Integer Types.
Limits on Integer Constants
| Constant | Meaning | Value |
|---|---|---|
| CHAR_BIT | Number of bits in the smallest variable that is not a bit field. | 8 |
| SCHAR_MIN | Minimum value for a variable of type signed char . | -128 |
| SCHAR_MAX | Maximum value for a variable of type signed char . | 127 |
| UCHAR_MAX | Maximum value for a variable of type unsigned char . | 255 (0xff) |
| CHAR_MIN | Minimum value for a variable of type char . | -128; 0 if /J option used |
| CHAR_MAX | Maximum value for a variable of type char . | 127; 255 if /J option used |
| MB_LEN_MAX | Maximum number of bytes in a multicharacter constant. | 5 |
| SHRT_MIN | Minimum value for a variable of type short . | -32768 |
| SHRT_MAX | Maximum value for a variable of type short . | 32767 |
| USHRT_MAX | Maximum value for a variable of type unsigned short . | 65535 (0xffff) |
| INT_MIN | Minimum value for a variable of type int . | -2147483647 — 1 |
| INT_MAX | Maximum value for a variable of type int . | 2147483647 |
| UINT_MAX | Maximum value for a variable of type unsigned int . | 4294967295 (0xffffffff) |
| LONG_MIN | Minimum value for a variable of type long . | -2147483647 — 1 |
| LONG_MAX | Maximum value for a variable of type long . | 2147483647 |
| ULONG_MAX | Maximum value for a variable of type unsigned long . | 4294967295 (0xffffffff) |
| LLONG_MIN | Minimum value for a variable of type long long . | -9,223,372,036,854,775,807 — 1 |
| LLONG_MAX | Maximum value for a variable of type long long . | 9,223,372,036,854,775,807 |
| ULLONG_MAX | Maximum value for a variable of type unsigned long long . | 18,446,744,073,709,551,615 (0xffffffffffffffff) |
If a value exceeds the largest integer representation, the Microsoft compiler generates an error.
maximum value of int
Is there any code to find the maximum value of integer (accordingly to the compiler) in C/C++ like Integer.MaxValue function in java?
7 Answers 7
std::numeric_limits is a template type which can be instantiated with other types:
I know it’s an old question but maybe someone can use this solution:
So far we have -1 as result ’till size is a signed int.
As Standard says, bits that are shifted in are 1 if variable is signed and negative and 0 if variable would be unsigned or signed and positive.
As size is signed and negative we would shift in sign bit which is 1, which is not helping much, so we cast to unsigned int, forcing to shift in 0 instead, setting the sign bit to 0 while letting all other bits remain 1.
We could also use a mask and xor but then we had to know the exact bitsize of the variable. With shifting in bits front, we don’t have to know at any time how many bits the int has on machine or compiler nor need we include extra libraries.
Using INT_MAX and INT_MIN in C/C++
While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.
In this article, we’ll take a look at using INT_MAX and INT_MIN in C/C++.
These are actually useful macros which represent the maximum and minimum integer values.
Let’s take a look at it, using some examples.
Using INT_MAX and INT_MIN
INT_MAX is a macro which represents the maximum integer value. Similarly, INT_MIN represents the minimum integer value.
These macros are defined in the header file <limits.h> , so you must include it.
Note that any integer variable must lie between INT_MIN and INT_MAX.
Typically, integers are stored as 4 bytes (32 bits).
This means that in almost all machines, the maximum integer value will be 2^(31) — 1 = +2147483647.
The minimum integer value will be -(2^31) = -2147483648
Let’s verify this, for our machine.
Output
Indeed, we get what we predict.
Let’s now take another example, to correctly predict any integer overflow or underflow.
Output
While this takes a good few seconds to run, this does indeed do what we expect.
The integer will overflow to INT_MIN , and will underflow to INT_MAX .
This is useful to detect such jumps in the values.
Why do we need these macros?
Often, for certain algorithms, it is sometimes necessary to initialize a variable as the lowest/highest value.
The number of bits of the datatype may differ based on the machine.
To make the usage of the maximum/minimum values be consistent, it would be convenient if everyone could use the same macros!
This is exactly why these kinds of macros exist —
- To spare you from remember the actual values
- Have consistent programming patterns across all machines
- Very convenient to use
Hopefully, these reasons may convince you to use such kinds of macros whenever you build your own C/C++ library.
Conclusion
In this article, we learned about using the INT_MAX and INT_MIN macros in C / C++.
For similar content, do go through our tutorial section on C programming.
References
-
on climits
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.