संपादित करें: यह गलत है, हालांकि मैं इसे यहां छोड़ रहा हूं क्योंकि टिप्पणियों में निम्नलिखित चर्चा कुछ हद तक रोशनी है, और मुझे मूल्यवान उम्मीद है।
यह सी (या सी ++) में ऑपरेटरों के मूल्यांकन आदेश के आधार पर अच्छी तरह परिभाषित है।
पहले अभिव्यक्ति के दाईं ओर असाइनमेंट बल मूल्यांकन मूल्यांकन। फंक्शन एप्लिकेशन पहले अपने तर्कों का मूल्यांकन करता है, इसलिए प्रभाव उचित रूप से स्पष्ट लगता है (हालांकि मैंने इसे चलाने की कोशिश नहीं की है, इसलिए मुझे सही करने के लिए स्वतंत्र महसूस करें!)। हम इस अस्थायी वेरिएबल का उपयोग करके फिर से लिखने कर सकते हैं (मैं उन्हें t0 और t1 फोन करता हूँ), और मेरा मानना है कि यह एक छोटे से स्पष्ट हो सकता है:
t0 = y++;
t1 = f(t0);
*y = t1;
शब्द "अनुक्रम बिंदु" एक रेड हेरिंग का एक सा है। एक अनुक्रम बिंदु वास्तव में नहीं बनाया गया है, बल्कि यह भाषा के लिए परिभाषित सख्त मूल्यांकन आदेश होने का नतीजा है।
संपादित करें: इस उत्तर के बौद्धिक रूप से संतोषजनक लगता है, जेम्स McNellis के जवाब यह है कि कहा गया है कि काम के मूल्यांकन के क्रम नहीं अच्छी तरह से परिभाषित है C99 कल्पना के प्रासंगिक टुकड़ा उद्धरण। वास्तव में उनके तथ्यों की जांच के लिए उन्हें पूरा श्रेय। मैं अपने उत्तर को "यह अच्छी तरह परिभाषित" से संशोधित करने जा रहा हूं, "यह शायद किसी विशेष कंपाइलर के संबंध में अच्छी तरह से परिभाषित किया गया है", क्योंकि मुझे लगता है कि यह असंभव है कि अधिकांश कंपाइलर नियमित रूप से उस क्रम को बदल देंगे जिसमें वे इस तरह के कोड को छोड़ देते हैं (मैं किसी भी आक्रामक अनुकूलन के लिए "संभवतः" कहता हूं)।
मैं नहीं कहता हूं। उस पर 'जीसीसी' मुझे बताता है। – kennytm