Я сталкиваюсь с некоторыми странными результатами с целым делением в С++. Я пытаюсь вычислить это: -2147483648/-1.
Я получаю 3 разных результата в 3 разных сценариях:
int foo(int numerator, int denominator) {
int res = numerator / denominator; // produces SIGFPE, Arithmetic exception interrupt
cout << res << endl;
}
int main() {
int res = -2147483648 / -1;
cout << res << endl; // prints -2147483648
cout << -2147483648 / -1 << endl; // prints 2147483648
foo(-2147483648, -1);
return 0;
}
Почему операция целочисленного деления приводит к различным результатам в разных ситуациях?