int sin firmar frente a size_t

Resuelto Rob asked hace 16 años • 8 respuestas

Noto que el código moderno C y C++ parece usarse size_ten lugar de int/ unsigned intprácticamente en todas partes, desde parámetros para funciones de cadena C hasta STL. Tengo curiosidad por saber el motivo de esto y los beneficios que aporta.

Rob avatar Sep 25 '08 14:09 Rob
Aceptado

El size_ttipo es el tipo entero sin signo que es el resultado del sizeofoperador (y el offsetofoperador), por lo que se garantiza que será lo suficientemente grande como para contener el tamaño del objeto más grande que su sistema pueda manejar (por ejemplo, una matriz estática de 8 Gb).

El size_ttipo puede ser mayor, igual o menor que an unsigned int, y su compilador podría hacer suposiciones al respecto para su optimización.

Puede encontrar información más precisa en el estándar C99, apartado 7.17, cuyo borrador está disponible en Internet en formato pdf , o en el estándar C11, apartado 7.19, también disponible en borrador pdf .

Remo.D avatar Sep 25 '2008 07:09 Remo.D

El C clásico (el dialecto temprano de C descrito por Brian Kernighan y Dennis Ritchie en The C Programming Language, Prentice-Hall, 1978) no proporcionaba size_t. El comité de estándares C introducido size_tpara eliminar un problema de portabilidad

Explicado en detalle en embeded.com (con un muy buen ejemplo)

azeemarif avatar Sep 25 '2008 07:09 azeemarif