Hay una diferencia sutil entre still useful
y something you should habitually use
. El tipo long
aún prospera, como Chris Lutz noted detrás de muchos tipos específicos del sistema y la plataforma (aunque, por lo general, como unsigned).
Cuando sabe los datos que va a trabajar con siempre va a encajar en ese tipo (agradablemente, mejor si también sabe el signo numérico), no hay ninguna razón en particular no usarlo, especialmente si tiene espacio limitado en una estructura para trabajar.
Sin embargo, en la mayoría de los casos, por el bien de los futuros mantenedores, es mucho mejor usar intxx_t o uintxx_t siempre que sea posible. Por ejemplo, usted no sabe sabe que una fecha de época UNIX siempre cabe dentro de un largo sin firmar en plataformas de 32 bits (por lo tanto, time_t), a menos que tenga la buena autoridad de que el mundo terminará antes de que se transfiera :)
Muy bien, cue los chistes de 2012 ... –
Yo diría que a menos que tengas una razón específica para necesitar * exactamente * XX bits, no deberías usar 'intXX_t'. Por lo general, realmente necesita * al menos * XX bits, en cuyo caso puede simplemente usar 'int' para X <= 16; 'long' para 16
caf
@caf: Imposible discutir eso. Sin embargo, gran parte del código que escribo está escrito con la idea de que cierto miembro nunca 'será más grande que' cierto tipo, cuando en realidad todo comienza mucho más pequeño de lo que realmente he planeado. A menudo es el caso cuando tienes que mantener los resultados de la consulta, tabular conjuntos de cosas que otras cosas crujieron, etc. Creo que soy más defensivo que eficiente, pero no tengo opción la mayoría del tiempo :) –