Hoje me deparei com um ponto interessante em uma revisão sobre o Code Review . O @Veedrac recomendou nesta resposta que tipos de tamanho variável (por exemplo, int
e long
) sejam substituídos por tipos de tamanho fixo como uint64_t
e uint32_t
. Citação dos comentários dessa resposta:
Os tamanhos de int e long (e, portanto, os valores que eles podem conter) dependem da plataforma. Por outro lado, int32_t sempre tem 32 bits. Usar int apenas significa que seu código funciona de maneira diferente em plataformas diferentes, o que geralmente não é o que você deseja.
O raciocínio por trás do padrão que não corrige os tipos comuns é parcialmente explicado aqui por @supercat. C foi escrito para ser portátil em todas as arquiteturas, ao contrário da montagem que geralmente era usada para programação de sistemas na época.
Eu acho que a intenção do projeto era originalmente que cada tipo, exceto int, fosse a menor coisa que pudesse lidar com números de vários tamanhos, e que esse seria o tamanho "de uso geral" mais prático que poderia lidar com +/- 32767.
Quanto a mim, sempre usei int
e não me preocupo com as alternativas. Eu sempre pensei que é o tipo mais com melhor desempenho, final da história. O único lugar que achei que a largura fixa seria útil é ao codificar dados para armazenamento ou transferência em uma rede. Eu raramente vi tipos de largura fixa no código escrito por outras pessoas também.
Estou preso nos anos 70 ou existe realmente uma justificativa para usar int
na era do C99 e além?