2013-04-25 10 views
18

int a=1, b=a++; अपरिभाषित व्यवहार का आह्वान करते हैं? a के प्रारंभिक और b के प्रारंभकर्ता में इसकी पहुंच और संशोधन के बीच कोई अनुक्रम बिंदु हस्तक्षेप नहीं है, लेकिन जहां तक ​​मैं कह सकता हूं, प्रारंभिक वस्तु वस्तु का "संशोधन" नहीं है; ऑब्जेक्ट का "प्रारंभिक मान" देने के लिए एक प्रारंभकर्ता निर्दिष्ट किया गया है। प्रति 6.7.8 प्रारंभ, अनुच्छेद 8:int int = 1, b = a ++; अपरिभाषित व्यवहार का आह्वान करें?

एक प्रारंभकर्ता किसी ऑब्जेक्ट में संग्रहीत प्रारंभिक मान निर्दिष्ट करता है।

और ऑब्जेक्ट तक किसी भी पहुंच से पहले "प्रारंभिक" अनुक्रमित होने के लिए उचित लगता है। क्या इस मुद्दे को पहले माना गया है, और क्या एक स्वीकार्य व्याख्या है?

+0

मैं कहूंगा कि फुटनोट 97 कहता है कि यह 'int a = 1 के समान है; int बी = ए ++; '। –

+0

@KerrekSB: फुटनोट 97 मानक के किस संस्करण (या ड्राफ्ट) में? फुटनोट संख्या अनुभाग संख्याओं की तुलना में बहुत कम स्थिर हैं। –

+0

आईआईआरसी, मानक के नवीनतम संस्करणों में, "अनुक्रम बिंदु" की अवधारणा को अप्रचलित किया जा रहा है। फुटनोट्स के रूप में, हाल ही में एक फुटनोट के बारे में एक चर्चा हुई जिसने घोषित और प्रारंभिक निर्माण की प्रसंस्करण के आदेश को परिभाषित किया था, और वह फुटनोट वास्तव में काफी पुराना और स्थिर लगता है :) – quetzalcoatl

उत्तर

24

यह अपरिभाषित व्यवहार का आह्वान नहीं करता है। 6.7.6 (3) में, यह कहा गया है

एक पूर्ण घोषणाकर्ता एक घोषणाकर्ता है जो एक अन्य घोषणाकर्ता का हिस्सा नहीं है। पूर्ण घोषणाकर्ता का अंत अनुक्रम बिंदु है।

कि एक पूर्ण घोषणाकर्ता का अंत अनुक्रम बिंदु है।

int a = 1, b = a++; 
    //^end of full declarator 
+0

'6.7.6 (3)' <- वह क्या है? – Sayakiss

+1

मानक के 6.7.6, अनुच्छेद 3, मानक (ठीक है, एन 1570 ड्राफ्ट, क्योंकि मेरे पास एक महंगा मानक खरीदने के लिए पैसा नहीं है, मुझे _really_ की आवश्यकता नहीं है)। वह खंड घोषणाकर्ताओं से संबंधित है। –

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