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.;)