numeric-conversion
¿Por qué es 0 < - 0x80000000?
Tengo a continuación un programa simple:
#include <stdio.h>
#define INT32_MIN (-0x80000000)
int main(void)
{ ... posible?
Funciona bien si cambio la macro a:
#define INT32_MIN (-2147483648L)
Puede alguien señalar el problema?
¿Es más eficiente realizar una comprobación de rango fundiendo a uint en lugar de comprobar valores negativos?
Me topé con este fragmento de código en la lista de código fuente de. NET :
// Following trick can reduce the range check ... sí, esto es micro optimización, no, no tengo la intención de usar esto en todas partes en mi código, solo tengo curiosidad.;)