我正在用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