2010-01-10 4 views
29
  1. बस आश्चर्य कीजिए कि क्या एक शाब्दिक स्ट्रिंग एक लवल्यू या रावल्यू है। क्या अन्य अक्षर (जैसे int, float, char आदि) lvalue या rvalue हैं?क्या शाब्दिक तार और फ़ंक्शन रिटर्न मूल्यों का मूल्य या राजस्व हैं?

  2. क्या फ़ंक्शन का रिटर्न मूल्य एक लेल्यू या रावल्यू है?

आप अंतर कैसे बताते हैं?

+1

मुझे यकीन नहीं है कि "lvalue" और "rvalue" के साथ आपका क्या मतलब है। क्या आपका मतलब है कि यह मान ऑपरेटर से बाएं या दाएं तरफ खड़ा हो सकता है? यदि हां, तो आपको अपना प्रश्न विशिष्ट करना चाहिए, क्योंकि आप सभी गैर-स्थिर चरों को लिख सकते हैं। फ़ंक्शन का रिटर्न वैल्यू कॉन्स है। – Gaim

+11

@ गैम: लैवल्यू और रैवल्यू विशिष्ट अर्थों के साथ सामान्य शब्द हैं। – jamesdlin

+0

@Gaim: lvalue और rvalue संकलक और languag विनिर्देश स्तर बोलते हैं। इस मामले में वे सी – Pod

उत्तर

40
  1. स्ट्रिंग शाब्दिक lvalues ​​हैं, लेकिन आप उन्हें
  2. rvalue नहीं बदल सकते हैं, लेकिन अगर यह एक सूचक और गैर-शून्य है, वस्तु यह बताते हैं के लिए एक lvalue

सी मानक है में बाएं और दाएं के लिए मूल शर्तों को पहचानता है; हालांकि, यह लोकेटर मूल्य के रूप में सोचने के लिए कहता है, जिसका मोटे तौर पर मतलब है कि आप किसी ऑब्जेक्ट का पता प्राप्त कर सकते हैं और इसलिए उस ऑब्जेक्ट में एक स्थान है। (C99 में 6.3.2.1 देखें।)

उसी टोकन द्वारा, मानक ने शब्द को अवशेष छोड़ दिया है, और केवल "अभिव्यक्ति के मूल्य" का उपयोग करता है, जो व्यावहारिक रूप से सबकुछ है, जिसमें इंक, वर्ण, फ्लोट्स इत्यादि। इसके अतिरिक्त, आप जो कुछ भी एक रावल्यू के साथ कर सकते हैं वह भी एक लाभा के साथ किया जा सकता है, ताकि आप सभी स्तरों के बारे में सोच सकें।

+2

छोटे और सही उत्तर के लिए +1। मुझे नहीं पता था कि सी मानक कहीं भी "रावल्यू" का उपयोग नहीं करता है, लेकिन वास्तव में यह मामला है (बस एक खोज किया!)। सी ++ के लिए एक और दिलचस्प अंतर। एक और दिन जिसे मैंने कुछ दिन पार किया वह यह है कि फ़ंक्शन डिज़ाइनर सी में रैल्यू हैं, जबकि वे सी ++ में अंतराल हैं। तो सी में 'सेशन' 'कुछ रावजूओं पर लागू किया जा सकता है - जो कार्य को निर्दिष्ट करते हैं। –

+1

यह सूचकांक में रावल्यू का उपयोग करता है। : पी –

+0

@ रॉगर: धन्यवाद! मैं स्ट्रिंग शाब्दिक के अलावा अन्य अक्षर के बारे में सोचता हूं? @ जोहान्स: मैंने अभी देखा कि समारोह desinators कल ऑनलाइन lvalues ​​हैं, और याद किया कि यह सी के लिए था।क्या मै गलत हु? – Tim

1

माइक्रोसॉफ्ट से सी ++ के लिए definition है। इस परिभाषा के अनुसार, एक शाब्दिक स्ट्रिंग, "हैलो वर्ल्ड" कहें, लवल्यू है, क्योंकि यह स्थिर है और अस्थायी नहीं है। वास्तव में यह आपके आवेदन के जीवनकाल में बनी हुई है।

4

सी: में दो प्रकार के अभिव्यक्तियां हैं 1. lvalue: एक अभिव्यक्ति जो एक अंतराल है, या तो असाइनमेंट के बाएं हाथ या दाएं हाथ के रूप में दिखाई दे सकती है। 2. रैवल्यू: एक अभिव्यक्ति जो एक रावल्यू है दाएं- लेकिन असाइनमेंट के बाईं ओर नहीं दिखाई दे सकती है। चर वैल्यू हैं और इसलिए असाइनमेंट के बाईं ओर दिखाई दे सकते हैं। संख्यात्मक अक्षरवृत्त हैं और इसलिए असाइन नहीं किया जा सकता है और बाईं ओर दिखाई नहीं दे सकता है। निम्नलिखित मान्य कथन है: int g = 20; लेकिन निम्नलिखित मान्य कथन नहीं है और संकलन-समय त्रुटि उत्पन्न करेगा: 10 = 20;

+1

अच्छा समझाया। – Shinchan

संबंधित मुद्दे