que - ¿Qué es un método portátil para encontrar el valor máximo de size_t?
size_t que es (5)
Como alternativa a las operaciones de bits sugeridas en las otras respuestas, puede hacer esto en C ++
#include <limits>
size_t maxvalue = std::numeric_limits<size_t>::max()
Me gustaría saber el valor máximo de size_t en el sistema que mi programa está ejecutando. Mi primer instinto fue usar el negativo 1, así:
size_t max_size = (size_t)-1;
Pero supongo que hay una forma mejor, o una constante definida en alguna parte.
Si asume al menos el compilador C ++ 11, entonces SIZE_MAX debería estar disponible para usted:
The size_t max_size = (size_t)-1;
La solución sugerida por OP es definitivamente la mejor hasta ahora, pero descubrí otra forma más complicada de hacer esto. Lo estoy publicando solo por curiosidad académica.
#include <limits.h>
size_t max_size = ((((size_t)1 << (CHAR_BIT * sizeof(size_t) - 1)) - 1) << 1) + 1;
Una constante manifiesta (una macro) existe en C99 y se llama SIZE_MAX
. Sin embargo, no hay tal constante en C89 / 90.
Sin embargo, lo que tienes en tu publicación original es un método perfectamente portátil para encontrar el valor máximo de size_t
. Está garantizado para trabajar con cualquier tipo sin firmar.
#define MAZ_SZ (~(size_t)0)
o SIZE_MAX