Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C और C++ में अनडिफाइंड, अनस्पेसिफाइड, और इम्प्लीमेंटेशन-डिफाइंड बिहेवियर में अंतर


अनडिफाइंड बिहेवियर (Undefined behavior) वह व्यवहार है जो C++ स्पेसिफिकेशन द्वारा परिभाषित नहीं है। उदाहरण के लिए, यदि आपके पास एक एक्सप्रेशन में मल्टीपल यूनरी इंक्रीमेंट/डिक्रीमेंट ऑपरेशन हैं जैसे i++ + ++i, तो उनका परिणाम व्यवहार में होता है जो परिभाषित नहीं है। यह केवल इस तथ्य के कारण है कि कुछ भाषा निर्माण सिंटैक्टिकली वैध हैं लेकिन आप कोड चलने पर व्यवहार का अनुमान नहीं लगा सकते। एक अन्य उदाहरण है एक्सप्रेशन: u = (u++);

इम्प्लीमेंटेशन-डिफाइंड बिहेवियर (Implementation-defined behavior) वह व्यवहार है जो स्पेसिफिकेशन द्वारा अनस्पेसिफाइड है और इम्प्लीमेंटर पर छोड़ दिया गया है कि वह तय करे और दस्तावेज करे कि चुनाव कैसे किया जाता है। इस मामले में, जो चुनाव किया जाता है वह गारंटीड होना चाहिए, यानी केवल वही होना चाहिए।

अनस्पेसिफाइड बिहेवियर (Unspecified behavior) के मामले में, C++ स्टैंडर्ड कई संभावित पथ प्रदान करता है लेकिन इम्प्लीमेंटेशन को कुछ भी दस्तावेज करने या गारंटी देने की आवश्यकता नहीं होती।


  1. - C++ में new ऑपरेटर और operator new में क्या अंतर है?

    C++ में जब हम एक नया ऑब्जेक्ट बनाना चाहते हैं, तो हमें मेमोरी में एक मेमोरी ब्लॉक बनाना होगा, फिर उस मेमोरी ब्लॉक को आरंभ करने के लिए कंस्ट्रक्टर को भी कॉल करना होगा। हम new कीवर्ड का उपयोग करके मेमोरी एलिमेंट बना सकते हैं। यह new ऑपरेटर दो लगातार कार्य करता है। लेकिन operator new केवल मेमोरी स्पेस

  1. - C++ में 'struct' और 'typedef struct' में अंतर?

    C++ में, struct और typedef struct के बीच कोई अंतर नहीं है क्योंकि, C++ में, सभी struct/union/enum/class घोषणाएं ऐसा व्यवहार करती हैं जैसे वे इम्प्लिसिटली typedefed हैं, जब तक कि नाम उसी नाम की किसी अन्य घोषणा द्वारा छिपा नहीं जाता। हालांकि एक सूक्ष्म अंतर है कि typedefs को फॉरवर्ड डिक्लेयर नहीं किय

  1. - C++ स्ट्रिंग कॉन्स्टेंट्स और कैरेक्टर कॉन्स्टेंट्स में अंतर

    C++ में, सिंगल कोट्स में एक कैरेक्टर एक कैरेक्टर लिटरल है। इसका प्रकार char है। उदाहरण के लिए, a ASCII आधारित सिस्टम पर मान 97 के साथ char प्रकार का है। डबल कोट्स में एक कैरेक्टर या कैरेक्टर्स की स्ट्रिंग एक स्ट्रिंग लिटरल दर्शाती है। इसका प्रकार const char[] है और यह स्ट्रिंग की लंबाई + 1 के आकार