我正在用C++中的整数除法面临一些奇怪的结果。我试图计算:-2147483648/-1。C++整数除法如何工作限制和负值?
我得到的是在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;
}
为什么整数除法运算在不同情况下会产生不同的结果?
值得一提的是,在VS-2015上,代码无法编译,称“负整数常量转换为无符号类型\t”,而“一元减运算符应用于无符号类型,结果仍为无符号”在所有'-2147483648/-1'行 –
简单的答案[这里](http://stackoverflow.com/a/29355979/1460794)。 – wally
这是visual studio如何做到这一点:'#define INT_MIN(-2147483647 - 1)//最小(有符号)整型值' – wally