Originally Posted by
whiteflags
size_t is required to be able to represent, in bytes, the size of an object of any type that can be examined by the sizeof() operator. So if you needed to represent say the length of a string, it is a rather logical choice, given that there are environmental, minimal limits on the size of an array (and other things) in standard C. The minimum limit of the size of an object, that means that the compiler must translate source containing an object of this size, is 2^16, in C99.
unsigned int is just an unsigned integer (read positive values only) type that can support different ranges on different platforms. It is a general purpose integer type.
I don't think you're wrong, that just doesn't matter. You're pointing out an implementation detail.