सी ++ स्टैंडर्ड (दस्तावेज़ संख्या: N3337 या दस्तावेज़ संख्या: N4296) के अनुसार std::string::npos
निम्नलिखित तरीके
static const size_type npos = -1;
जहां std :: स्ट्रिंग :: size_type कुछ अहस्ताक्षरित पूर्णांक प्रकार है परिभाषित किया गया है। तो कुछ भी अद्भुत नहीं है कि std :: string :: npos बराबर -1 है। प्रारंभकर्ता को std::string::npos
के tyhpe में परिवर्तित किया जाता है।
इस समीकरण
(string::npos == ULONG_MAX) is true,
का सवाल है तो इसका मतलब है कि प्रकार std::string::npos
इस्तेमाल किया कार्यान्वयन unsigned long
में टाइप किया है। यह प्रकार आमतौर पर size_t
प्रकार से मेल खाता है।
इस समीकरण
(18446744073709551615 == -1)
बाईं शाब्दिक में कुछ अहस्ताक्षरित अभिन्न प्रकार है कि इतनी बड़ी शाब्दिक स्टोर करने के लिए उपयुक्त है। इस प्रकार सही ऑपरेंड को साइन बिट को प्रोपेट करके इस हस्ताक्षरित प्रकार में भी परिवर्तित किया जाता है। चूंकि बाएं ऑपरेंड स्वयं को प्रकार का अधिकतम मान दर्शाता है तो वे बराबर होते हैं।
स्रोत
2016-11-15 11:07:04
अतिप्रवाह के लिए लागू होता है: p आप तुलना एक अहस्ताक्षरित और एक हस्ताक्षरित मूल्य – Stargateur
इस अपरिभाषित व्यवहार नहीं है । – rubenvb
18446744073709551615 = 2^64 -1 ...डरावना संयोग? – lelloman