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