आप सही प्रकार का पूर्णांक लगातार बनाने की जरूरत है। समस्या यह है कि 0x100000000
को int
के रूप में व्याख्या किया गया है, और कास्टिंग/असाइनमेंट सहायता नहीं करता है: स्थिरता int
के लिए स्वयं भी बहुत बड़ी है।
uint64_t Key = UINT64_C(0x100000000);
यह करना होगा: आप कि लगातार uint64_t
प्रकार का है निर्दिष्ट करने के लिए सक्षम होना चाहिए। आप UINT64_C
उपलब्ध नहीं है, तो कोशिश:
uint64_t Key = 0x100000000ULL;
वास्तव में, C99 में (6.4.4.1p5):
एक पूर्णांक निरंतर के प्रकार में इसी सूची के पहले है जिसका मूल्य दर्शाया जा सकता है।
और किसी भी प्रत्यय के बिना हेक्साडेसिमल स्थिरांकों के लिए सूची है:
int
long int unsigned int
long int
unsigned long int
long long int
unsigned long long int
तो अगर आप C99 मोड में अपने संकलक लागू, आप एक चेतावनी नहीं मिलना चाहिए (धन्यवाद जाइल्स!)।
स्रोत
2010-08-22 15:40:31