लघु जवाब:
यह var
की एक प्रति वापस आ जाएगी और उसके बाद तुरंत बाद वैश्विक var
को बढ़ा देते।
लांग जवाब:
C11 6.5.2.4
"पोस्टफ़िक्स का परिणाम ++ ऑपरेटर संकार्य का मूल्य है के रूप में एक पक्ष प्रभाव, संकार्य वस्तु का मूल्य है। वृद्धि .. "।/-/ परिणाम की मान गणना को के साइड इफेक्ट से पहले अनुक्रमित किया गया है जो ऑपरेंड के संग्रहीत मूल्य को अद्यतन करता है।
मानक 5.1.2.3 "कार्यक्रम निष्पादन" निर्दिष्ट करता है कि सभी दुष्प्रभाव से पहले कार्यक्रम एक अनुक्रम बिंदु का सामना करना पड़ता चाहिए मूल्यांकन किया गया है। (अनुक्रम बिंदुओं के बारे में बहुत कुछ here पाया जा सकता है)।
return
कथन (सी 11 6.8/4) के बाद अनुक्रम बिंदु है।
इसका मतलब है कि var++
अभिव्यक्ति मुख्य() जारी रखने से पहले पूरी तरह से मूल्यांकन की गारंटी है।
आपकी मशीन कोड इस छद्म कोड तरह दिखेगा:
- स्टोर स्टैक पर
var
की स्थानीय प्रतिलिपि (या एक में आदि रजिस्टर)
- साथ 1.
- वापसी वैश्विक
var
बढ़ाएँ उप दिनचर्या से।
- "कॉपी-ऑफ -
var
" का उपयोग करें।
यदि आपने इसके बजाय उपसर्ग वृद्धि का उपयोग किया था, तो कॉपी ऑपरेशन को संग्रहीत करने से पहले अनुक्रमित किया गया होगा।
इसका पुराना मान वापस कर दिया गया है, और वृद्धि मूल्य को संग्रहीत किया जाता है। –
हां। ऐसा लगता है कि यह उम्मीद के रूप में काम कर रहा है। मुझे यकीन नहीं है कि मानक द्वारा निर्णय लेने का सही विचार है। – mgoszcz2
यह ठीक है - वैश्विक वैरिएबल के रूप में ठीक है। –