Hay 5 tipos de enteros sin signo estándar en C:
unsigned char
unsigned short
unsigned int
unsigned long
unsigned long long
con varios requisitos para sus tamaños y rangos (brevemente, el rango de cada tipo es un subconjunto del rango del siguiente tipo, pero algunos de ellos pueden tener el mismo rango).
size_tes un typedef(es decir, un alias) para algún tipo sin signo (probablemente uno de los anteriores, pero posiblemente un tipo entero sin signo extendido , aunque eso es poco probable). Es el tipo cedido por elsizeof operador.
En un sistema, podría tener sentido usarlo unsigned intpara representar tamaños; en otro, podría tener más sentido usar unsigned longo unsigned long long. ( size_tes poco probable que sea unsigned charo unsigned short, pero está permitido).
El propósito de size_tes aliviar al programador de tener que preocuparse por qué de los tipos predefinidos se usa para representar tamaños.
Código que asume sizeofrendimientos unsigned inty no sería portátil. size_tEs más probable que el código que asume que produce una sea portátil.
typedef /*This part is implementation dependent */ size_t;