6 ms·
The core language says that the result of sizeof is size_t, defined in <stddef.h> (and other headers). size_t is a typedef (alias) for an implementation-define
by _kst_ 5y ago
The core language says that the result of sizeof is size_t, defined in <stddef.h> (and other headers).
size_t is a typedef (alias) for an implementation-defined unsigned integer type.
It could have been worded differently with the same meaning. For example, the core language (section 6 of the standard) could have said that sizeof yields a result of an implementation-defined unsigned integer type without referring to "size_t". The library section (section 7) already says that size_t "is the unsigned integer type of the result of the sizeof operator". Personally I think that referring to size_t in the language section adds clarity, even if it's slightly redundant.
In a given implementation, a compiler might arrange for sizeof to yield a result of type unsigned long, for example. The corresponding <stddef.h> header must then define size_t as unsigned long for the implementation to be correct.