जैसा कि अन्य ने ध्यान दिया है, इस कोड का व्यवहार सी/सी ++ में अपरिभाषित है। आप जो भी परिणाम प्राप्त कर सकते हैं।
आपके सी # कोड का व्यवहार सी # मानक द्वारा कड़ाई से परिभाषित है।
निश्चित रूप से दोनों भाषाओं के लिए इसे अलग-अलग लागू करने के लिए कुछ तर्क होना चाहिए?
अच्छा, मान लीजिए कि आप सी # डिजाइन कर रहे थे, और सी ++ प्रोग्रामर सीखने के लिए भाषा को आसान बनाने की कामना करते थे। क्या आप इस समस्या के लिए सी ++ के दृष्टिकोण की प्रतिलिपि बनाना चुनेंगे, अर्थात्, इसे अपरिभाषित छोड़ दें? क्या आप वास्तव में पूरी तरह बुद्धिमान डेवलपर्स के लिए गलती से कोड लिखना आसान बनाना चाहते हैं कि संकलक सिर्फ इसके लिए कोई अर्थ बना सकता है?
सी # के डिजाइनरों का मानना नहीं है कि सरल अभिव्यक्तियों के अपरिभाषित व्यवहार एक अच्छी बात है, और इसलिए हमने कड़ाई से परिभाषित किया है कि इस तरह के अभिव्यक्तियों का क्या अर्थ है। हम संभवतः प्रत्येक सी ++ कंपाइलर के साथ सहमत नहीं हो सकते हैं क्योंकि विभिन्न सी ++ कंपाइलर्स आपको इस तरह के कोड के लिए अलग-अलग परिणाम देते हैं, और इसलिए हम उन सभी के साथ सहमत नहीं हो सकते हैं।
क्यों सी ++ के डिजाइनरों का मानना है कि इस तरह के सरल अभिव्यक्तियों को अनिश्चित व्यवहार के लिए छोड़ना बेहतर है, ठीक है, आपको उनमें से एक से पूछना होगा। मैं निश्चित रूप से कुछ अनुमान लगा सकता हूं, लेकिन वे केवल शिक्षित अनुमान होंगे।
मैंने इस तरह के मुद्दे के बारे में कई ब्लॉग लेख लिखे हैं; मेरा सबसे हालिया एक लगभग कोड है जो आप यहां उल्लेख करते हैं।कुछ लेख आप भी पढ़ सकते हैं:
लिए कैसे सी # के डिजाइन सूक्ष्म कीड़े के उन्मूलन को प्रोत्साहित करती है:
http://blogs.msdn.com/ericlippert/archive/2007/08/14/c-and-the-pit-of-despair.aspx
वास्तव में सी # में पूर्वता, संबद्धता, और निष्पादन का आदेश के बीच संबंध क्या है?
http://blogs.msdn.com/ericlippert/archive/2008/05/23/precedence-vs-associativity-vs-order.aspx
किस क्रम में अनुक्रमण, असाइनमेंट और वेतन वृद्धि के साइड इफेक्ट होता है?
http://blogs.msdn.com/ericlippert/archive/2009/08/10/precedence-vs-order-redux.aspx
ठीक है, jynx, दोस्तों। ;) – hobbs