मैं कोड है:एक आकार_टी से एक हस्ताक्षरित int में कनवर्ट करने से मुझे चेतावनी क्यों मिलती है?
unsigned int length = strlen(somestring);
मैं पर 4 चेतावनी स्तर के साथ संकलन कर रहा हूँ, और यह मुझे बता रहा है कि "size_t
से unsigned int
करने के लिए रूपांतरण, डेटा की संभावित हानि" जब एक size_t
एक के लिए एक typedef
है unsigned int
।
क्यों !?
संपादित करें:
मैं सिर्फ अपने ही समस्या हल हो। मैं एक एक्सपी उपयोगकर्ता हूं, और मेरा कंपाइलर 64 बिट संगतता की जांच कर रहा था। चूंकि size_t
प्लेटफॉर्म पर निर्भर है, 64 बिट के लिए यह unsigned long long
होगा, जहां यह unsigned int
जैसा नहीं है।
सभी आकार निर्भर हैं। 'size_t' को किसी अन्य प्रकार के बराबर नहीं होना चाहिए, वे सभी अलग-अलग हो सकते हैं। आपके पास एकमात्र गारंटी है कि 'आकार (char) == 1', और' char' (जो भी निर्भर है!) में बिट्स की संख्या हैडर 'CHAR_BIT' में शीर्षलेख' 'में परिभाषित किया गया है, और वह 'आकार (छोटा)> = आकार (चार) ',' आकार (int)> = आकार (लंबा)', और 'आकार (लंबा लंबा)> = आकार (लंबा) '। –
GManNickG
@GMan: वास्तव में मुझे विश्वास है कि 'आकार (लंबा)> = आकार (int) ':) +1 हालांकि –
@ बिली: ओह डांट। अब ठीक करने में बहुत देर हो चुकी है। -_- ओह अच्छा। : 3 – GManNickG