एक lvalue (लोकेटर वैल्यू) एक ऑब्जेक्ट को दर्शाता है जो मेमोरी में कुछ पहचान योग्य स्थान घेरता है (यानी उसका एक एड्रेस होता है)।
rvalues को अपवर्जन द्वारा परिभाषित किया जाता है। प्रत्येक एक्सप्रेशन या तो lvalue होता है या rvalue, इसलिए, एक rvalue एक ऐसा एक्सप्रेशन है जो मेमोरी में कुछ पहचान योग्य स्थान घेरने वाले ऑब्जेक्ट को दर्शाता नहीं है।
उदाहरण के लिए, एक असाइनमेंट अपने बाएं ऑपरेंड के रूप में lvalue की अपेक्षा करता है, इसलिए निम्न वैध है –
int i = 10;
लेकिन यह नहीं:
int i; 10 = i;
ऐसा इसलिए है क्योंकि i का मेमोरी में एक एड्रेस है और यह एक lvalue है। जबकि 10 की कोई पहचान योग्य मेमोरी लोकेशन नहीं है और इसलिए यह एक rvalue है। इसलिए i के मान को 10 को असाइन करना कोई मतलब नहीं रखता।