के लिए अमान्य मान लोग आकार_टी को इंगित करने के लिए क्या उपयोग करते हैं? -1 काम नहीं करता है, और 0 वैध आकार हो सकता है।size_t
size_t
उत्तर
शायद ((size_t)-1)
?
सच पूछिये तो, यह मान्य आकार है, लेकिन एक बार आप इस एक है आप किसी भी अन्य की जरूरत होने की संभावना नहीं कर रहे हैं ;-)
सी 99 मल्टीबाइट स्ट्रिंग फ़ंक्शंस में से कुछ ऐसा करते हैं: वे असामान्य स्थितियों को इंगित करने के लिए '(size_t) (- 1)' या यहां तक कि '(size_t) (- 2)' वापस लौटाते हैं; यह इष्टतम नहीं है, लेकिन यह अभ्यास में काम करता है; यदि आपके प्रश्न का कारण त्रुटि प्रबंधन है, तो एक सूचक चर को एक पॉइंटर पास करना बेहतर हो सकता है (उदाहरण के लिए '_Bool' प्रकार का त्रुटि ध्वज, प्रकार' int' का त्रुटि कोड या प्रकार का त्रुटि संदेश ' कॉन्स char * ') अतिरिक्त तर्क – Christoph
हाँ, यह एक आम मुहावरे है। आप अक्सर '(time_t) -1' भी देख सकते हैं। –
@ माइकल क्रेलिन-हैकर: '(time_t) -1' थोड़ा अलग है; मानक विशेष रूप से कहता है कि वर्तमान समय निर्धारित नहीं किया जा सकता है कि 'समय() 'द्वारा दिया गया मान है। और 'time_t' अक्सर एक हस्ताक्षरित प्रकार होता है, इसलिए' (time_t) -1' आमतौर पर युग से पहले 1 सेकंड होता है। –
असल में आप नहीं कर सकते हैं। जो भी मूल्य आप उपयोग करते हैं वह मान्य हो सकता है। एक ध्वज को बेहतर कहें कि यह अमान्य है।
और तुम क्या निरूपित करने के लिए है कि एक int
अमान्य है क्या करते हो? -1 एक int के लिए एक वैध मूल्य है। इन प्रकारों ने "अमान्य" मान निर्दिष्ट नहीं किए हैं। आप एक अवैध मूल्य का प्रतिनिधित्व करने के लिए एक निश्चित मूल्य (जो आमतौर पर आपके चर का प्रतिनिधित्व करने का मूल्य कभी नहीं मान सकते हैं) चुनने का निर्णय ले सकते हैं, लेकिन यह आपकी खुद की परिभाषा है, और कुछ ऐसा नहीं जो लोग आम तौर पर उपयोग करते हैं।
व्यक्तिगत रूप से, मुझे इस तरह से पसंद नहीं है। मैं एक और चर, bool IsValid
बनाना पसंद करता हूं, जो कहेंगे, कि उस size_t चर का मान मान्य है या नहीं। कभी-कभी, उन्हें कक्षा को बनाने के लिए भी बेहतर हो सकता है।
यदि आप std :: string के बारे में बात कर रहे हैं, तो size_t का अमान्य मान std :: string :: npos है। आम तौर पर आपको -1 का उपयोग नहीं करना चाहिए क्योंकि size_t को हस्ताक्षरित नहीं किया गया है, और आप प्रकार के बीच निहित रूपांतरण करने वाले संकलक पर असफल तुलना प्राप्त कर सकते हैं।
कहा जा रहा है कि, std :: तारों का npos 0XFFFFFFFFFFFFFFFFF पर सेट है ... जो -1 का बाइनरी समतुल्य है। यह एक हस्ताक्षरित size_t फ़ील्ड के लिए अधिकतम अनुमत मान का भी मूल्यांकन करता है।
यह 'string :: size_type' है, 'size_t' नहीं ;-) –
फिर भी ... बाकी उत्तर ठोस सोना है। ठोस सोना! – Kieveli
कम से कम यह चमकता है ;-) –
मेरे संस्करण है:
#include <limits>
#define invalid_index std::numeric_limits<size_t>::max()
'std :: numeric_limits
- 1. std :: size_t बनाम size_t बनाम std :: string :: size_type
- 2. size_t जोड़ों में ओवरफ्लो
- 3. size_t परिवर्तित/C++
- 4. सी ++ size_t या ptrdiff_t
- 5. 'size_t' बनाम कंटेनर :: size_type '
- 6. सी: कास्ट int से size_t
- 7. size_t से int तक कास्ट करें, या size_t के साथ पुनरावृत्त करें?
- 8. सी size_t और ssize_t नकारात्मक मान
- 9. मार्शल SIZE_T * के लिए सही तरीका?
- 10. सी ++, सर्वोत्तम प्रथाओं, int या size_t?
- 11. क्या uintptr_t और size_t समान हैं?
- 12. किस प्रकार का डेटा size_t होल्डिंग है?
- 13. क्या "std :: size_t" सी ++ में समझ में आता है?
- 14. size_t uint32 uint64 आदि का उपयोग करने के लिए प्रेरणा
- 15. क्या सी ++ में size_t का उपयोग करना अच्छा अभ्यास है?
- 16. मुझे off_t और size_t जैसे प्रकार प्रिंट कैसे करना चाहिए?
- 17. एक size_t को एक पूर्णांक में परिवर्तित करना (सी ++)
- 18. सी में `size_t` के` _t` का अर्थ क्या है?
- 19. size_t जी द्वारा ++ पाया नहीं जा सकता है - 4.1 या दूसरों उबंटू 8.1
- 20. करता है (size_t) ((char *) 0) कभी 0 का मूल्यांकन नहीं करता है?
- 21. size_t प्रिंट करने के लिए printf का उपयोग करने का सही तरीका क्या है?
- 22. क्यों std :: count (_if) iterator वापस करें :: size_tpe size_t के बजाय?
- 23. क्या यह जगह पर std :: size_t का उपयोग करने के लिए अच्छा अभ्यास है?
- 24. कोई भी बता सकता है कि उदाहरण के साथ size_t प्रकार का उपयोग क्यों किया जाता है?
- 25. off_t, nlink_t, size_t और अन्य विशेष प्रकारों को प्रदर्शित करने के लिए printf का उपयोग कैसे करें?
- 26. विरासत वर्ग
- 27. इस सी ++ स्टैक आवंटक के लिए सुधार?
- 28. .h फाइलों में Redefinition त्रुटियां
- 29. लंबे समय तक संघ के सदस्य का संरेखण क्यों संघ/संरचना से बड़ा है? क्या ये सही है?
- 30. अनंत recursion मेटा में पूर्णांक वर्ग मूल
कैसे करता है -1 "काम नहीं"? –
व्यक्तिगत रूप से, मैं गैर-पॉज़िक्स सिस्टम का उपयोग करने से इनकार करता हूं और मैं उपलब्ध होने पर 'ssize_t' पर भरोसा करता हूं। –