Avatar ·

अनुक्रम बिंदु (sequence points) क्या हैं और वे C++ में अपरिभाषित व्यवहार (undefined behavior) से कैसे संबंधित हैं?

सभी को नमस्कार! मैंने C++ सीखना शुरू किया है और एक बहुत ही अजीब स्थिति का सामना किया। मैं सरल कोड लिखता हूँ: ```cpp int i = 0; int result = i++ + i++; ``` मुझे उम्मीद थी कि result 1 (0 + 1) होगा, लेकिन कंपाइलर कभी 0, कभी 1, और कभी कोई और संख्या देता है। और अगर `i = i++ + 1` लिखूं, तो परिणाम पूरी तरह से अप्रत्याशित होता है। मुझे बताया गया कि यह "अनुक्रम बिंदु" (sequence points) और "अपरिभाषित व्यवहार" (undefined behavior) से संबंधित है। लेकिन मैं समझ नहीं पा रहा हूँ कि यह क्या है। क्या आप सरल शब्दों में समझा सकते हैं? कंपाइलर बाएं से दाएं संचालन क्यों नहीं कर सकता? और कैसे पता चलेगा कि कोड कब सुरक्षित है और कब नहीं? कृपया सही और गलत कोड के उदाहरण दें।