मैं वास्तव में इस मामले पर एक "आधिकारिक" स्रोत नहीं ढूंढ सकता, ज्यादातर क्योंकि यह शायद सम्मेलन का मामला है, और शब्दावली अक्सर बहुत असंगत है। लेकिन, रॉबर्ट सीकॉर्ड के " C और C ++ में सुरक्षित कोडिंग " के कुछ अंश निम्नलिखित हैं : स्थिति की मेरी समझ:
पूर्णांक ओवरफ़्लो तब होता है जब कोई पूर्णांक अपने अधिकतम मूल्य से अधिक बढ़ जाता है या उसके न्यूनतम मूल्य 3 से कम हो जाता है । इंटेगर ओवरफ्लो अंतर्निहित प्रतिनिधित्व से निकटता से संबंधित हैं।
फुटनोट कहता है:
[३] अपने न्यूनतम मूल्य से परे एक पूर्णांक घटाना अक्सर एक पूर्णांक अंडरफ़्लो के रूप में जाना जाता है , हालांकि तकनीकी रूप से यह शब्द एक अस्थायी बिंदु स्थिति को संदर्भित करता है।
हम इसे पूर्णांक अतिप्रवाह कहते हैं इसका कारण यह है कि मूल्य का प्रतिनिधित्व करने के लिए केवल पर्याप्त स्थान उपलब्ध नहीं है । इस अर्थ में, यह एक बफर अतिप्रवाह के समान है (वास्तव में बफर सीमा को पार करने के अलावा, यह आमतौर पर चारों ओर के व्यवहार को प्रदर्शित करता है। *) इस दृष्टिकोण से, के बीच कोई वैचारिक अंतर नहीं है INT_MIN - 1और INT_MAX + 1। दोनों ही मामलों में intया तो मूल्य का प्रतिनिधित्व करने के लिए डेटा प्रकार में पर्याप्त जगह नहीं है - इसलिए हमारे पास एक अतिप्रवाह है ।
यह भी ध्यान रखना उपयोगी हो सकता है कि x86 और x86_64 प्रोसेसर आर्किटेक्चर में, झंडे रजिस्टर में एक अतिप्रवाह बिट शामिल है। अतिप्रवाह बिट सेट है जब एक हस्ताक्षरित पूर्णांक अंकगणितीय ऑपरेशन ओवरफ्लो होता है। अभिव्यक्ति INT_MIN - 1अतिप्रवाह बिट सेट करेगा। (कोई "अंडरफ्लो" बिट नहीं है।) स्पष्ट रूप से, एएमडी और इंटेल के इंजीनियर एक पूर्णांक अंकगणितीय ऑपरेशन के परिणाम का वर्णन करने के लिए "ओवरफ्लो" शब्द का उपयोग करते हैं, जिसमें डेटा बिट में फिट होने के लिए बहुत सारे बिट्स होते हैं, भले ही वह हो। मूल्य संख्यात्मक रूप से बहुत बड़ा या बहुत छोटा है।
* वास्तव में, सी में, हस्ताक्षरित पूर्णांक अतिप्रवाह वास्तव में अपरिभाषित व्यवहार है, लेकिन जावा जैसी अन्य भाषाओं में, दोनों के पूरक अंकगणित चारों ओर लपेटेंगे।
INT_MIN - 1याINT_MAX + 1