Tornar simples int 64 bits quebraria muito código razoável?
Até recentemente, eu havia considerado a decisão da maioria dos implementadores / fornecedores de sistemas de manterint
32 bits, mesmo em máquinas de 64 bits, é uma espécie de verruga conveniente. Com os modernos tipos de tamanho fixo C99 (int32_t
euint32_t
etc.) a necessidade de haver um tipo inteiro padrão de cada tamanho 8, 16, 32 e 64 desaparece principalmente e parece queint
poderia muito bem ser feito de 64 bits.
No entanto, a maior consequência real do tamanho da planícieint
em C vem do fato de que C essencialmente não tem aritmética em menores queint
tipos. Em particular, seint
for maior que 32 bits, o resultado de qualquer aritméticauint32_t
valores tem tiposigned int
, o que é bastante perturbador.
Esse é um bom motivo para manterint
permanentemente fixado em 32 bits em implementações do mundo real? Estou inclinado a dizer que sim. Parece-me que poderia haver uma enorme classe de usos deuint32_t
que quebram quandoint
é maior que 32 bits. Mesmo a aplicação do operador unário menos ou complementar bit a bit torna-se perigoso, a menos que você retorneuint32_t
.
Obviamente, os mesmos problemas se aplicam auint16_t
euint8_t
nas implementações atuais, mas todo mundo parece estar ciente e acostumado a tratá-las como "menores queint
"tipos.