#include <iostream>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int num=-2147483648;
int positivenum=-num;
int absval=abs(num);
std::cout<<positivenum<<"\n";
std::cout<<absval<<"\n";
return 0;
}
Hola estoy bastante curiosidad por qué la salida del código anterior es¿No es posible la negación de -2147483648 en C/C++?
-2147483648
-2147483648
Ahora conozco que -2147483648
es el número más pequeño entre represntable enteros con signo, (suponiendo un int
es de 32 bits). Hubiera supuesto que uno obtendría respuestas basura solo después de que bajáramos por debajo de este número. Pero en este caso, +2147483648 está cubierto por el sistema de enteros de 32 bits. Entonces, ¿por qué la respuesta negativa en ambos casos?
Use _int64 en lugar de int y vuelva a intentarlo. – jmucchiello