cout<<(x++)++; //fails
cout<<++(++x); //passes
पोस्ट वृद्धि क्यों विफल हो जाती है? मैं इसे देखता हूं लेकिन तकनीकी कारणों के बारे में सुनिश्चित नहीं हूं।पोस्ट वृद्धि ऑपरेटर ++
cout<<(x++)++; //fails
cout<<++(++x); //passes
पोस्ट वृद्धि क्यों विफल हो जाती है? मैं इसे देखता हूं लेकिन तकनीकी कारणों के बारे में सुनिश्चित नहीं हूं।पोस्ट वृद्धि ऑपरेटर ++
x++
एक रैवल्यू देता है ताकि आप इसे फिर से ++
निष्पादित न कर सकें। दूसरी ओर, ++x
एक लाभा देता है ताकि आप ++
पर प्रदर्शन कर सकें।
यह भी देखें [यह प्रश्न] (http://stackoverflow.com/questions/371503/why-is-i-cononsidered-an-l-value-but-i-is-not) – Benoit
इस प्रकार वृद्धिशील ऑपरेटर सी/सी ++ में काम करते हैं।
आप चर (पोस्टफ़िक्स वेतन वृद्धि) के बाद ++
डालते हैं, तो पूरे अभिव्यक्ति incrementing से पहले चर के मूल्य के मूल्यांकन करता है।
यदि आप चर (prefix वृद्धि) से पहले ++
डालते हैं, तो अभिव्यक्ति वृद्धि कार्य के बाद मान का मूल्यांकन करती है।
जबकि उपसर्ग ऑपरेशन उत्तीर्ण चर के संदर्भ को देता है, पोस्टफिक्स संस्करण एक अस्थायी मान देता है, जिसे बढ़ाया नहीं जाना चाहिए।
बिल्कुल। आप एक रावल्यू पर एक ++ प्रदर्शन नहीं कर सकते हैं। here कैसे दिया जाता है के बारे में एक अच्छा स्पष्टीकरण दिया गया है।
अस्थायी रूप से बढ़ने के बाद? – Benoit
'x' का प्रकार क्या है? यह बहुत मायने रखता है। यदि यह अंतर्निहित है, तो 'ऑपरेटर ++' फ़ंक्शन कॉल नहीं है। – MSalters
इसका एक अंतर्निहित, int x = 5; – user835194