मुझे लगता है कि आपने ज्यादातर अपने सवाल का जवाब दिया। मैं आपके वाक्यांशों में एक छोटा सा परिवर्तन कर सकता हूं और "अस्थायी चर" को "रिबन" से बदल सकता हूं जैसा कि सी। गिबन्स ने उल्लेख किया है।
C के मेमोरी मॉडल के बारे में जानने के दौरान शब्द चर, तर्क, अस्थायी चर और इतने पर और स्पष्ट हो जाएगा (यह एक अच्छा अवलोकन की तरह दिखता है: https://www.geeksforgeeks.org/memory-layout-of-c-program/ )।
जब आप अभी शुरुआत कर रहे हैं, तब "rvalue" शब्द अपारदर्शी लग सकता है, इसलिए मुझे आशा है कि निम्नलिखित इसके बारे में एक अंतर्ज्ञान विकसित करने में मदद करता है।
Lvalue / rvalue एक समान चिन्ह (असाइनमेंट ऑपरेटर) के विभिन्न पक्षों के बारे में बात कर रहे हैं: lvalue = बाएँ हाथ की ओर (लोअरकेस L, न कि "एक") rvalue = दाएँ हाथ की ओर
सी कैसे मेमोरी (और रजिस्टर) का उपयोग करता है के बारे में थोड़ा सीखना यह देखने के लिए उपयोगी होगा कि भेद क्यों महत्वपूर्ण है। में व्यापक ब्रश स्ट्रोक , संकलक एक अभिव्यक्ति (rvalue) का परिणाम की गणना उस मशीन भाषा निर्देश की एक सूची बनाता है और फिर कहते हैं कि परिणाम कहीं (lvalue)। निम्नलिखित कोड के टुकड़े से निपटने वाले कंपाइलर की कल्पना करें:
x = y * 3
असेंबली स्यूडोकोड में यह कुछ इस खिलौने के उदाहरण की तरह लग सकता है :
load register A with the value at memory address y
load register B with a value of 3
multiply register A and B, saving the result in A
write register A to memory address x
++ ऑपरेटर (और इसके समकक्ष) को संशोधित करने के लिए "कहीं" की आवश्यकता है, अनिवार्य रूप से कुछ भी जो एक अंतराल के रूप में काम कर सकता है।
सी मेमोरी मॉडल को समझना मददगार होगा क्योंकि आप अपने दिमाग में एक बेहतर विचार ला सकते हैं कि कार्यों के लिए तर्क कैसे दिए जाते हैं और (आखिरकार) डायनामिक मेमोरी आवंटन के साथ कैसे काम करना है, जैसे कि मॉलॉक () फ़ंक्शन। समान कारणों से आप कंपाइलर क्या कर रहे हैं, इसका बेहतर विचार प्राप्त करने के लिए कुछ बिंदु पर कुछ सरल असेंबली प्रोग्रामिंग का अध्ययन कर सकते हैं। इसके अलावा अगर आप gcc का उपयोग कर रहे हैं , -S विकल्प "संकलन के चरण के बाद उचित रोकें; इकट्ठा न करें।" दिलचस्प हो सकता है (हालांकि मैं इसे छोटे कोड के टुकड़े पर आज़माने की सलाह दूंगा)।
एक तरफ के रूप में: ++ निर्देश 1969 के आसपास रहा है (हालांकि यह सी के पूर्ववर्ती, बी में शुरू हुआ):
(केन थॉम्पसन का) अवलोकन (था) कि ++ x का अनुवाद x = x + 1 की तुलना में छोटा था। "
उस विकिपीडिया संदर्भ के बाद आपको सी भाषा के इतिहास पर डेनिस रिची ("के एंड आर सी" में "आर" द्वारा एक दिलचस्प राइटअप में ले जाया जाएगा, यहाँ सुविधा के लिए लिंक किया गया है: http://www.bell-labs.com/ usr / dmr / www / chist.html जहाँ आप "++" खोज सकते हैं।