В C есть 5 стандартных целочисленных типов без знака:
unsigned char
unsigned short
unsigned int
unsigned long
unsigned long long
с различными требованиями к их размерам и диапазонам (кратко, диапазон каждого типа является подмножеством диапазона следующего типа, но некоторые из них могут иметь тот же диапазон).
size_t
является typedef
(т. е. псевдонимом) для некоторого типа без знака (возможно, одного из вышеперечисленных, но возможно расширенного целочисленного типа без знака , хотя это маловероятно). Это тип, выдаваемый sizeof
оператором.
В одной системе может иметь смысл использовать unsigned int
для представления размеров; с другой стороны, имеет смысл использовать unsigned long
или unsigned long long
. ( size_t
Вряд ли будет либо unsigned char
или unsigned short
, но это разрешено).
Цель size_t
состоит в том, чтобы избавить программиста от необходимости беспокоиться о том, какой из предопределенных типов используется для представления размеров.
Код, который предполагает, что sizeof
дает unsigned int
, не будет переносимым. Код, который предполагает, что он дает a size_t
, с большей вероятностью будет переносимым.
typedef /*This part is implementation dependent */ size_t;