Identify Value-type

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
}
Questions