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)?

¿Fue útil?

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

     
      
  1. 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.
  2.   

Se puede usar std::numeric_limits<unsigned int>::min().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top