Hacker News new | ask | show | jobs
by senki 5727 days ago
The "limits.h" (ISO C99 Standard) defines UINT_MAX as the maximum value for a variable of type unsigned int which is 4294967295 (0xffffffff).
2 comments

Sigh:

"The contents of the header <limits.h> are given below, in alphabetical order. The minimum magnitudes shown shall be replaced by implementation-defined magnitudes with the same sign."

  #define UINT_MAX 65535

Key here is implementation-defined, with a minimum of 65535.
Platforms differ, and the limits.h reflects this, that's the point. We should use the abstractions (the #defines) of the standard library, i.e. refer to these values by their names, that's the way to write portable software.
I always though that was set by the vendor correctly. Oh well..

I always liked the definition of true in Forth (all bits set to 1). It really made it a lot easier.

The standard doesn't require that an int use all of the bits of storage it takes. A hypothetical 33-bit machine may present a C environment where ints are 32-bits, with the extra bit unused (and unset).