http://www.velocityreviews.com/forums/t658743-defning-size_max.html
#define MY_SIZE_MAX ((size_t)-1)
(ozbear) writes:
> In another thread related to size_t and SIZE_MAX, a #define > was suggested for SIZE_MAX where is it not predefined. > > The #define was: > > #define MY_SIZE_MAX ((size_t)-1) > > I have tried this on my system in a printf and it yields a > reasonable value but I do not fully understand how it it > evaluated. size_t is a /type/, defined on my system as > > typedef unsigned int size_t; > > The part I do not understand is the the meaning of subtracting 1 > from a /type/ rather than an expression? How does the compiler > evaluate this? As Ian Collins already posted, it's a cast, not a subtraction. Looking at the expression in painful detail from the inside out: ``1'' is an integer constant. ``-1'' is an expression consisting of a unary "-" applied to ``1''. ``(size_t)-1'' is a cast expression, specifying that the result of the Finally, we put parentheses around the whole thing because it's a -- |
|