A observação de Bjarne Stroustrup de que "usar unsigned em vez de um int para ganhar mais um bit para representar números inteiros positivos quase nunca é uma boa ideia" levantou preocupações sobre a decisão de tornar size_t unsigned.
Originalmente, size_t foi tornado unsigned para acomodar arquiteturas com ponteiros de 16 bits, como sistemas DOS. Para evitar limitações de tamanho de string, o padrão C determinou que ptrdiff_t, a contraparte assinada de size_t, fosse efetivamente de 17 bits.
Embora essas razões históricas ainda possam ser aplicáveis em sistemas embarcados, eles são menos importantes para a programação moderna de 32 e 64 bits. Nesses ambientes, não há vantagens práticas em usar tipos não assinados para números, e seu uso pode introduzir possíveis bugs devido a regras de conversão implícitas de C/C (por exemplo, where string("Hi").length()
A decisão de tornar size_t unsigned não foi um erro, mas sim uma escolha prática para os sistemas limitados de sua época. No entanto, nas práticas de programação modernas, geralmente é aconselhável minimizar o uso de inteiros não assinados em interfaces e para números, exceto em circunstâncias específicas onde a natureza autodescritiva de typedef int MyType é benéfica.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3