La observación de Bjarne Stroustrup de que "usar unsigned en lugar de un int para ganar un bit más para representar enteros positivos casi nunca es una buena idea" ha planteado preocupaciones sobre la decisión de hacer que size_t no esté firmado.
Originalmente, size_t se hizo sin firmar para adaptarse a arquitecturas con punteros de 16 bits, como los sistemas DOS. Para evitar limitaciones en el tamaño de las cadenas, el estándar C exigía que ptrdiff_t, la contraparte firmada de size_t, fuera efectivamente de 17 bits.
Si bien estas razones históricas aún pueden ser aplicables en sistemas integrados, lo son menos para la programación moderna de 32 y 64 bits. En estos entornos, no hay ventajas prácticas al usar tipos sin signo para números, y su uso puede introducir errores potenciales debido a las reglas de conversión implícitas de C/C (por ejemplo, donde string("Hi").length()
La decisión de hacer size_t sin firmar no fue un error, sino más bien una elección práctica para los sistemas limitados de su época. Sin embargo, en las prácticas de programación modernas, generalmente es aconsejable minimizar el uso de enteros sin signo en interfaces y números, excepto en circunstancias específicas en las que la naturaleza autodescriptiva de typedef int MyType es beneficiosa.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3