6

(++i)++ अपरिभाषित व्यवहार है? क्या यह संभव है कि प्रीफिक्स वृद्धि का दुष्प्रभाव पोस्टफिक्स वृद्धि के लिए बढ़ी हुई ऑब्जेक्ट को पुनर्प्राप्त करने के बाद होता है? यह मेरे लिए अजीब लगेगा।है (++ i) ++ अपरिभाषित व्यवहार?

मेरा आंत महसूस करता है कि यह सी ++ 03 में अपरिभाषित है और सी ++ 11 में अच्छी तरह परिभाषित है। क्या मैं सही हू?

+0

आपकी आंत महसूस सही है। – ybungalobill

+43

इतने सारे लोग इस बारे में सवाल क्यों पूछते हैं? बस यह मत करो। कौन परवाह करता है कि यह क्या करता है - ** यह भयानक कोड है, और इसे कभी भी लिखा नहीं जाना चाहिए। ** – jjnguy

+12

@jjnguy: मैं "कभी लिखा नहीं जाना चाहिए" के बीच एक अंतर खींचूंगा और "कभी भी उत्पादन कोड में उपयोग नहीं किया जाना चाहिए जो कुछ भी महत्वपूर्ण करता है । " इससे सीखने के लिए ज्ञात खराब कोड लिखना अक्सर अच्छा होता है। नियंत्रित तरीके से विफल चीजें, अनुमानित असफलताओं का परीक्षण करें, आदि – David

उत्तर

11

मेरा आंत महसूस करता है कि यह सी ++ 03 में अपरिभाषित है और सी ++ 0x में अच्छी तरह परिभाषित है।

हाँ आप सही हैं। व्यवहार C++ 03 में अपरिभाषित है क्योंकि आप दो अनुक्रम बिंदुओं के बीच एक से अधिक बार i को संशोधित करने का प्रयास कर रहे हैं।

व्यवहार सी ++ 0x में अच्छी तरह से परिभाषित किया गया है क्योंकि (++i)++(i += 1)++ के बराबर है। += ऑपरेटर के दुष्प्रभावों को ++ (पोस्ट वृद्धि) के सापेक्ष अनुक्रमित किया गया है और इसलिए व्यवहार अच्छी तरह से परिभाषित किया गया है।

0

यह एक अनिर्धारित व्यवहार है क्योंकि i को दो अनुक्रम बिंदुओं के बीच एक से अधिक बार संशोधित किया जा रहा है।

संबंधित मुद्दे