What is a portable method to find the maximum value of size_t?
I'd like to know the maximum value of size_t on the system my program is running. My first instinct was to use negative 1, like so:
size_t max_size = (size_t)-1;
But I'm guessing there's a better way, or a constant defined somewhere.
Solution 1:
A manifest constant (a macro) exists in C99 and it is called SIZE_MAX
. There's no such constant in C89/90 though.
However, what you have in your original post is a perfectly portable method of finding the maximum value of size_t
. It is guaranteed to work with any unsigned type.
Solution 2:
#define MAZ_SZ (~(size_t)0)
or SIZE_MAX
Solution 3:
As an alternative to bit-operations suggested in the other answers, you could do this in C++
#include <limits>
size_t maxvalue = std::numeric_limits<size_t>::max()