Identify value types
Here is a simple program that contains various LValues and RValues. Analyze the code and identify the LValues and RValues.
#include <iostream>
int main() {
int a = 10;
int b = 20;
int sum = a + b;
a = 30;
std::cout << "a: " << a << std::endl;
std::cout << "b: " << b << std::endl;
std::cout << "sum: " << sum << std::endl;
int* p = &a;
*p = 40;
std::cout << "Value of a using pointer: " << *p << std::endl;
}
Answer
#include <iostream>
int main() {
int a = 10; // 'a' is an LValue, '10' is an RValue
int b = 20; // 'b' is an LValue, '20' is an RValue
int sum = a + b; // 'sum' is an LValue, 'a + b' is an RValue
a = 30; // 'a' is an LValue, '30' is an RValue
// 'std::cout' and 'std::endl' are LValues
std::cout << "a: " << a << std::endl; // 'a' is an LValue
std::cout << "b: " << b << std::endl; // 'b' is an LValue
std::cout << "sum: " << sum << std::endl; // 'sum' is an LValue
int* p = &a; // 'p' is an LValue, 'a' is an LValue, '&a' is an RValue
*p = 40; // '*p' is an LValue, '40' is an RValue
std::cout << "Value of a using pointer: " << *p << std::endl; // '*p' is an LValue
}