जब मैं इस तरह की कुछ चर को परिभाषित कर रहा हूँ:सी ++: परिवर्तनशील घोषणा आरंभीकरण आदेश
int a = pop(), b = pop(), c = pop();
सी ++ एक गारंटी नहीं है कि a
पहले प्रारंभ किया जा रहा है, तो b
और फिर c
देता है? या आदेश परिभाषित नहीं है?
जब मैं इस तरह की कुछ चर को परिभाषित कर रहा हूँ:सी ++: परिवर्तनशील घोषणा आरंभीकरण आदेश
int a = pop(), b = pop(), c = pop();
सी ++ एक गारंटी नहीं है कि a
पहले प्रारंभ किया जा रहा है, तो b
और फिर c
देता है? या आदेश परिभाषित नहीं है?
[dcl.decl]/3 कहते हैं
-3- एक घोषणा में प्रत्येक init-declarator अलग से विश्लेषण किया जाता है जैसे कि यह अपने आप में एक घोषणा में था।
अपने कोड जिसका मतलब है की तरह व्यवहार किया जाता है:
int a = pop();
int b = pop();
int c = pop();
हम्म - मुझे विश्वास नहीं है कि यह प्रारंभिकरण के अनुमानित आदेश का तात्पर्य है ... –
जो अभी भी किसी भी विशेष आदेश की गारंटी नहीं देता है। –
नोट 97 एक स्पष्टीकरण प्रदान करता है, लेकिन "आमतौर पर" काम का उपयोग करता है। मेरा मानना है कि, हालांकि, इसका मतलब यह है कि इस नियम के लिए अच्छी तरह से परिभाषित अपवाद हैं, लेकिन यह "कंपाइलर तक नहीं" है। –
आप समझा सकते हैं क्यों यह महत्वपूर्ण है? हम एक बेहतर उत्तर दे सकते हैं – alestanis
मैं 3 लाइनों के बजाय सिर्फ एक पंक्ति लिखना चाहता हूं :) – shoosh
पठनीयता में सुधार करें और 3 लाइनों का उपयोग करके अपना ऑर्डर दें। यह इतना सरल है। वैसे भी दो लुसी लाइनों से छुटकारा पाने का क्या मतलब है? – stefan