-2147483648 32 बिट्स के साथ पूर्णांक प्रकार के लिए सबसे छोटा पूर्णांक है, लेकिन ऐसा लगता है कि यह if(...)
वाक्य में अतिप्रवाह होगा :
if (-2147483648 > 0)
std::cout << "true";
else
std::cout << "false";
यह true
मेरे परीक्षण में छपेगा। हालाँकि, अगर हम -2147483648 को पूर्णांक में रखते हैं, तो परिणाम अलग होगा:
if (int(-2147483648) > 0)
std::cout << "true";
else
std::cout << "false";
यह छपेगा false
।
मैं उलझन में हूं। क्या कोई इस पर स्पष्टीकरण दे सकता है?
अद्यतन 02-05-2012:
आपकी टिप्पणियों के लिए धन्यवाद, मेरे संकलक में, इंट का आकार 4 बाइट्स है। मैं कुछ सरल परीक्षण के लिए कुलपति का उपयोग कर रहा हूं। मैंने अपने प्रश्न में विवरण बदल दिया है।
इस पोस्ट में बहुत सारे अच्छे उत्तर हैं, एंड्रीटी ने बहुत विस्तृत विवरण दिया कि कंपाइलर इस तरह के इनपुट पर कैसा व्यवहार करेगा और यह न्यूनतम पूर्णांक कैसे लागू किया गया। दूसरी ओर qPCR4vir ने कुछ संबंधित "जिज्ञासा" दी और पूर्णांक का प्रतिनिधित्व कैसे किया जाता है। कितना प्रभावशील है!
INT_MIN
की -9223372036854775808
, अगर CHAR_BIT
16. और यहां तक कि के साथ है CHAR_BIT == 8
और sizeof(int
== 4) `आप प्राप्त कर सकते हैं -9223372036854775807
, क्योंकि सी 2-पूरक संख्या की आवश्यकता नहीं है।