#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;
}
Привет, мне очень любопытно, почему вывод приведенного выше кода равен
-2147483648
-2147483648
Теперь я знаю, что -2147483648
- наименьшее представимое число среди подписанных целых чисел (при условии, что int
составляет 32 бита). Я бы предположил, что можно получить мусорные ответы только после того, как мы опустимся ниже этого числа. Но в этом случае +2147483648 покрывается 32-битным система целых чисел Итак, почему в обоих случаях отрицательный ответ?