C++ भाषा उपसर्ग वेतन वृद्धि/कमी ऑपरेटरों, lvalues वापसी करते हुए पोस्टफ़िक्स लोगों rvalues लौट आते हैं। इस बीच, सभी संशोधित ऑपरेटरों को lvalue तर्क की आवश्यकता होती है। इसका अर्थ यह है कि उपसर्ग वृद्धि/कमी का परिणाम किसी अन्य अतिरिक्त ऑपरेटर को पास किया जा सकता है जिसके लिए एक अंतराल तर्क (अतिरिक्त वृद्धि/कमी सहित) की आवश्यकता होती है।
सी में बहुत इसी कारण ++ आप इस
int i = 0;
int *p = &++i;
जो i
को बढ़ा देते और i
करने के लिए p
बिंदु कर देगा की तरह कोड लिख सकते हैं के लिए
। यूनरी &
को लवल्यू ऑपरेंड की आवश्यकता है, यही कारण है कि यह उपसर्ग ++
(लेकिन पोस्टफिक्स के साथ नहीं) के परिणामस्वरूप काम करेगा। बिल्ट-इन उपसर्ग वेतन वृद्धि से अधिक के साथ
भाव/एक ही वस्तु के लिए आवेदन किया decrements अपरिभाषित व्यवहार उत्पादन, लेकिन वे फिर भी अच्छी तरह से बनते हैं (अर्थात "compilable")।
++foo--
जैसे अभिव्यक्तियां अमान्य हैं क्योंकि सी ++ पोस्टफिक्स ऑपरेटरों में उपसर्ग की तुलना में अधिक प्राथमिकता है। ब्रेसेस इसे बदल सकते हैं। उदाहरण के लिए, (++foo)--
एक अच्छी तरह से गठित अभिव्यक्ति है, यद्यपि फिर से अपरिभाषित व्यवहार की ओर अग्रसर है।
संबंधित: http://stackoverflow.com/a/3601661/706836 – Pyrodante