कई दिलचस्प here उठाया सवाल सी में अपरिभाषित व्यवहार उनमें से एक (थोड़ा संशोधित) हैक्या 'एक [i] = i;' हमेशा अच्छी तरह से परिभाषित व्यवहार में परिणाम?
के बारे में कर रहे हैं अपरिभाषित व्यवहार में कोड परिणाम का निम्न भाग करता है?
int i = 0, *a = &i; // Line 1 a[i] = i + 1; // Line 2
के बाद से वहाँ प्रश्न के इस हिस्से के लिए कोई ठोस जवाब है, और मैं सी ++ में व्यवहार में जानने में दिलचस्पी रहा हूँ, मैं इसे फिर से यहां की परवरिश कर रहा हूँ।
नियम # 2 Undefined Behavior and Sequence Points से कहते हैं
ऊपर के उदाहरण मेंइसके अलावा, पहले मूल्य तभी पहुँचा दी जाएगी मूल्य निर्धारित करने
जाहिर संग्रहीत करने के लिए, मान है दो बार एक्सेस किया जा रहा है: a[i]
(lhs) और i
(rhs), और उनमें से केवल एक (rhs) मान को संग्रहीत करने के लिए निर्धारित करता है।
क्या लाइन 2 उपर्युक्त नियम का उल्लंघन करता है और परिणामस्वरूप सी ++ 03 में अपरिभाषित व्यवहार होता है?
रूप i
लाइन 2 पर संशोधित किया गया है कि क्या करने के लिए कुछ भ्रम की स्थिति नहीं है?
+ 1 दोनों सी + +03 और सी ++ 11 उत्तरों। –