Estos son para la independencia de la plataforma.
size_t
es, por definición, el tipo devuelto por sizeof
. Es lo suficientemente grande como para representar el objeto más grande en el sistema de destino.
No hace tantos años, 32 bits hubieran sido suficientes para cualquier plataforma. 64 bits es suficiente hoy. Pero, ¿quién sabe cuántos bits se necesitarán 5, 10 o 50 años a partir de ahora?
Al escribir su código no es importante, es decir, siempre use size_t
cuando quiere decir "tamaño de un objeto" - puede escribir código que realmente compilará y ejecutará 5, 10 o 50 años a partir de ahora. O al menos tener una oportunidad de luchar.
Usa los tipos para decir lo que quieres decir. Si por algún motivo necesita una cantidad específica de bits (probablemente solo cuando se trata de un formato definido externamente), use un tipo específico de tamaño. Si desea algo que sea "el tamaño de palabra natural de la máquina", es decir, rápido, use int
.
Si está trabajando con una programática como sizeof
o strlen
, utilice el tipo de datos apropiado para esa interfaz, como size_t
.
Y nunca intente asignar un tipo a otro a menos que sea lo suficientemente grande como para mantener el valor por definición.
'puede escribir código que realmente compilará y ejecutará 5, 10 o 50 años a partir de ahora' +1 para el optimismo :-) – Praetorian
Bueno, no en C, pero tengo un código que fue escrito en 1996 y todavía compila y carreras. ¡15 años! –