¿Qué es un valor portátil para UINT_MIN?
-
29-09-2019 - |
Pregunta
En limits.h
, hay #defines para INT_MAX
y INT_MIN
(y SHRT_ * y * LONG_ y así sucesivamente), pero sólo UINT_MAX
.
En caso defino a mí mismo UINT_MIN
? Es un valor 0
portátil (cero positivo)?
Solución
Si quieres ser "typesafe" se puede utilizar 0U
, por lo que si se utiliza en una expresión que tendrá las promociones correctos para unsigned
.
Otros consejos
Es un entero sin signo -, por definición, su valor más pequeño posible es 0. Si desea alguna justificación, además de sentido común, la norma dice:
6.2.6.2 Los tipos enteros
- Para los tipos de enteros sin signo distintos de
unsigned char
, los bits de la representación de objeto se divide en dos grupos: los bits de valor y bits de relleno (que no tienen por qué ser cualquiera de los últimos). Si hay N bits de valor, cada bit representará a una potencia diferente de 2 entre 1 y 2 ^ ( N -1), de modo que objetos de ese tipo será capaz de representar valores de 0 a 2 ^ ( N -1) usando una representación binaria pura; esto se conoce como la representación de valores. Los valores de los bits de relleno son sin especificar.
Se puede usar std::numeric_limits<unsigned int>::min()
.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow