उस किताब सही नहीं है। प्रति C11 6.4.4.1 के रूप में, हेक्साडेसिमल का पूर्णांक स्थिरांक के प्रकार इस तालिका से निर्धारित कर रहे हैं:
Suffix ... Octal or Hexadecimal Constant
None ... int
unsigned int
long int
unsigned long int
long long int
unsigned long long int
u or U ... unsigned int
unsigned long int
unsigned long long int
आपका निरंतर 0xAA
कोई प्रत्यय है तो उपरोक्त तालिका के शीर्ष भाग क्या लागू होता है। मतलब: संकलक पहले जांच करेगा कि क्या मान int
में फिट हो सकता है। यदि यह फिट नहीं है, तो यह जांच करेगा कि यह unsigned int
में फिट होगा या नहीं।
सी के किसी ज्ञात कार्यान्वयन पर, मूल्य 0xAA
निश्चित रूप से int
के अंदर फिट होगा। प्रश्न का सही उत्तर int
है।
हालांकि, लगातार 0xAAu
रहा था, उद्धृत तालिका का निचला हिस्सा लागू होता और परिणाम unsigned int
होता।
इस प्रकार भाषा परिभाषित करती है। किसी ने किसी बिंदु पर फैसला किया कि यह कैसे होना चाहिए। आप वास्तव में यह नहीं पता कर सकते कि क्यों आपके पास टाइम मशीन नहीं है और कुछ दशकों पहले जो भी निर्णय लेता है उससे पूछ सकते हैं। – Art
@Art क्या आप सी मानक या कुछ और से अधिक जानकारी देने के लिए कृपया कर सकते हैं? मैं इसकी सराहना करता हूं :) –
यहां आपको संदर्भ की आवश्यकता है http://stackoverflow.com/questions/12499592/c-hex-constant-type – HighPredator