#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;
}
Hi Jestem całkiem ciekawy dlaczego wyjście powyżej kod jestNegacja -2147483648 nie jest możliwa w C/C++?
-2147483648
-2147483648
Teraz wiem, że -2147483648
jest najmniejsza liczba represntable wśród podpisanych wskazówki, (zakładając int
wynosi 32 bity). Założę się, że odpowiedzi na śmieci można uzyskać dopiero po przekroczeniu tego numeru. Ale w tym przypadku +2147483648 IS jest objęty 32-bitowym systemem liczb całkowitych. Dlaczego więc negatywna odpowiedź w obu przypadkach?
Użyj _int64 zamiast int i spróbuj ponownie. – jmucchiello