2010-10-12 14 views
10

-5 एक पूर्णांक अक्षर है? या 5 एक शाब्दिक है, और -5 एक अभिव्यक्ति है जो एक शब्द के रूप में एक शाब्दिक शब्द लेने के साथ एक अभिव्यक्ति है? प्रश्न तब उठ गया जब मैं सोच रहा था कि छोटे हस्ताक्षरित पूर्णांक मूल्यों को कैसे हार्डकोड करना है।Is -5 एक पूर्णांक अक्षर है?

+4

"छोटे हस्ताक्षरित पूर्णांक" के लिए से INT_MIN के बारे में कैसे? – Arun

+4

या, क्योंकि इसे सी ++ टैग किया गया है, कैसे 'std :: numeric_limits :: min()'? – Praetorian

+0

मैंने जलवायु में देखा। #define INT_MIN (-2147483647 - 1) दिलचस्प :) धन्यवाद –

उत्तर

9

यह एक यूनिट शून्य है जिसके बाद 5 पूर्णांक अक्षर के रूप में है। हां, इससे जुड़वां पूरक में सबसे छोटे संभव पूर्णांक का प्रतिनिधित्व करना मुश्किल हो जाता है।

+0

@ जेरी कॉफ़िन: यदि प्रकार 'लम्बे' और 'हस्ताक्षरित लंबे' 32-बिट्स हैं, तो क्या मानक-अनुरूप कंपेलर -2147483648 को 2147483648, एक त्रुटि, या अपरिभाषित व्यवहार के बराबर एक हस्ताक्षरित लंबे समय के रूप में माना जाएगा? – supercat

+0

@supercat: C++ में यह अपरिभाषित है, लेकिन फिर आपके द्वारा निर्दिष्ट आकारों के साथ C++ में, '2147483648' अपरिभाषित है (2.13.1/2) - आपको * एक प्रत्यय' 2147483648u' प्रदान करना होगा या आपके कार्यान्वयन से सहायता प्राप्त करनी होगी। आप उम्मीद करेंगे कि कंपाइलर आपको एक पक्ष करेगा, और '2147483648' को बिना हस्ताक्षरित लंबे, या शायद समर्थित होने पर 'लंबा लंबा' का इलाज करेगा, या यदि कोई अन्य विफल रहता है तो त्रुटि: लेकिन ऐसा नहीं है। सी 99 में (फिर उन आकारों के साथ), '-2147483648' ऋणात्मक' लंबा लंबा 'है। मुझे लगता है कि सी 8 9 में यह एक 'हस्ताक्षरित लंबा' है, जिससे एक से दूसरे में माइग्रेट करते समय मनोरंजन का कोई अंत नहीं होता है। –

+0

32-बिट 'int' के साथ सी 99 में,' -2147483648' में 'unsigned int' टाइप किया गया है और इसका मान 2147483648 है। इसका कोई कारण नहीं है कि यह 'लंबा लंबा' हो जाएगा क्योंकि 2147483648 'हस्ताक्षरित int' में फिट बैठता है, और फिर यूनरी अस्वीकरण ऑपरेटर इसे लागू किया जाता है। –

3

Jerry Coffin said के रूप में, ऋण चिह्न शाब्दिक का हिस्सा नहीं है।

, अपने अंतिम सवाल हल करने के लिए कैसे के लिए के रूप में मैं सोच रहा था छोटी से छोटी पर हस्ताक्षर किए पूर्णांक हार्डकोड करने के लिए कैसे

है यही कारण है कि INT_MIN (और limits.h या stdint.h या जहां की तरह) के लिए है महत्व देता है।

यदि आप देखते हैं कि INT_MIN परिभाषित किया गया है, तो शायद यह प्रश्न उठाए गए समस्या के आसपास काम करने के लिए (-2147483647 - 1) जैसा कुछ दिखाई देगा।

+0

धन्यवाद। मैंने पहले से ही कर लिया। दरअसल मैं किसी भी समस्या में नहीं चल रहा हूं। मैं बस सोच रहा था :)) –

+0

@ आर्मेन: समझा। मुझे लगता है कि मुझे "सवाल से उठाई गई समस्या" कहनी चाहिए। –

+0

क्या आप मुझे बता सकते हैं कि '-1' में किस प्रकार का प्रकार है और' 1' किस प्रकार का है ..? मुझे पता है कि यह एक बुनियादी सवाल है लेकिन मुझे इसके बारे में भ्रम है। –

संबंधित मुद्दे