क्या चेतावनियां? सबसे स्पष्ट मैं एक "संकुचित रूपांतरण" के बारे में सोच सकता हूं, जिसका कहना है कि आप size_t
unsigned int
पर असाइन कर रहे हैं, और एक चेतावनी प्राप्त हो रही है कि जानकारी खो जा सकती है।
unsigned long
साथ size_t
की जगह का मुख्य नकारात्मक पक्ष यह है कि unsigned long
इतना बड़ा size_t
के हर संभव मान होना चाहिए होने की गारंटी नहीं है, और Windows 64 पर यह इतना बड़ा नहीं है। तो आप पाते हैं कि आपको अभी भी चेतावनियां हैं।
उचित ठीक है कि अगर आप एक चर (या डेटा सदस्य) के लिए एक size_t
असाइन करते हैं, क्या आप वाकई चर एक प्रकार इतना बड़ा size_t
के किसी भी मान नहीं है बनाना चाहिए है। यही चेतावनी है कि सब कुछ है। इसलिए आपको unsigned long
पर स्विच नहीं करना चाहिए, आपको उन चर को size_t
पर स्विच करना चाहिए।
इसके विपरीत, यदि आपके पास कोई चर है जो किसी भी आकार को पकड़ने के लिए पर्याप्त होने की आवश्यकता नहीं है, तो unsigned int
के लिए पर्याप्त बड़ा है, तो पहले स्थान पर size_t
का उपयोग न करें।
दोनों प्रकार के (size_t
और unsigned int
) वैध उपयोग करता है, इसलिए किसी भी दृष्टिकोण है कि अंधाधुंध कुछ अन्य प्रकार द्वारा उन सभी को उपयोग की जगह होना चाहिए गलत :-) असल में, आप size_t
या uintmax_t
और के लिए के साथ सब कुछ बदल सकते अधिकांश प्रोग्राम जो ठीक होंगे। अपवाद हैं जहां कोड int
के समान आकार के एक हस्ताक्षरित प्रकार का उपयोग करने पर निर्भर करता है, या जो भी हो, जैसे कि बड़ा प्रकार कोड को तोड़ देता है।
स्रोत
2013-03-26 12:53:24
यदि कुछ समय में पुस्तकालयों के परिवर्तन का विनिर्देशन और 'size_t' हस्ताक्षरित हो जाता है, तो आपको बहुत सारी परेशानी होगी। – Spook
ऐसा होने की संभावना क्या है? size_t को स्मृति पता का प्रतिनिधित्व करना माना जाता है ... –
एक नकारात्मक बात यह है कि 64-बिट विंडोज़ 'size_t' पर' लंबे समय तक हस्ताक्षरित 'है, क्योंकि' लंबा 'केवल 32 बिट्स (64-बिट मोड में भी) है। –