Me encontré con un punto interesante hoy en una revisión en Code Review . @Veedrac recomendó en esta respuesta que los tipos de tamaño variable (por ejemplo, int
y long
) sean reemplazados por tipos de tamaño fijo como uint64_t
y uint32_t
. Cita de los comentarios de esa respuesta:
Los tamaños de int y long (y, por lo tanto, los valores que pueden contener) dependen de la plataforma. Por otro lado, int32_t siempre tiene 32 bits de longitud. Usar int solo significa que su código funciona de manera diferente en diferentes plataformas, que generalmente no es lo que desea.
@Supercat explica en parte aquí el razonamiento detrás del estándar que no fija los tipos comunes . C fue escrito para ser portátil en todas las arquitecturas, a diferencia del ensamblaje que generalmente se usaba para la programación de sistemas en ese momento.
Creo que la intención del diseño fue originalmente que cada tipo que no sea int sea la cosa más pequeña que pueda manejar números de varios tamaños, y que int sea el tamaño "de propósito general" más práctico que pueda manejar +/- 32767.
En cuanto a mí, siempre he usado int
y no estoy realmente preocupado por las alternativas. Siempre he pensado que es el tipo más con el mejor rendimiento, final de la historia. El único lugar en el que pensé que el ancho fijo sería útil es cuando se codifican datos para almacenamiento o transferencia a través de una red. Raramente he visto tipos de ancho fijo en el código escrito por otros tampoco.
¿Estoy atrapado en los años 70 o hay realmente una razón para usar int
en la era de C99 y más allá?