मुझे सी ++ में पूर्णांक विभाजन के साथ कुछ अजीब परिणाम का सामना करना पड़ रहा है। मैं इसकी गणना करने की कोशिश कर रहा हूं: -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;
}
क्यों करता पूर्णांक विभाजन आपरेशन विभिन्न स्थितियों में अलग अलग परिणाम का उत्पादन?
वर्थ का उल्लेख यह है कि कोड विंडोज वीएस-2015 पर संकलित नहीं है, 'नकारात्मक अभिन्न निरंतर निरंतर प्रकार \t' में परिवर्तित हो गया है और 'यूनरी माइनस ऑपरेटर हस्ताक्षरित प्रकार पर लागू होता है, परिणाम अभी भी हस्ताक्षरित नहीं है' सभी '-2147483648/-1' लाइनों –
पर सरल उत्तर [यहां] (http://stackoverflow.com/a/29355979/1460794)। – wally
इस प्रकार दृश्य स्टूडियो यह करता है: '# परिभाषित करें INT_MIN (-2147483647 - 1) // न्यूनतम (हस्ताक्षरित) int मान' – wally