В русскоязычной литературе lvalue называют леводопустимым выражением. А rvalue , соответственно, праводопустимым выражением. В обеих случаях имеется в виду расположение относительно знака равества "=".
Lvalue: Те выражения, которым можно присваивать, называются lvalue в C, C++ и многих других языках (это сокращение от «left value», т. е. слева от знака равенства). Остальные выражения считаются rvalue. Имена переменных очевидным образом являются lvalue, но не только они. Выражения:
a
a[i + 2]
some_struct.some_field
*ptr
*(ptr + 3)
— это все тоже lvalue.
Другими словами, lvalue - это нечто, чему можно присвоить. Т. е. это некое фиксированное место в памяти, куда можно что-то положить.
Еще вариант: по мнению А. В. Столярова, результат вычисления выражения lvalue - не просто представляет собой значение, а идентифицирует некую область памяти, в которой располагается значение. Простейшим примером леводопустимого выражения является имя переменной, но этим дело не ограничивается.
Rvalue: это выражения, которым присваивать нельзя. Нельзя написать так:
int a=5;
10=a; // Ошибка
Здесь во второй строке 10 - это Rvalue. И такому выражению (выражению 10) невозможно ничего присвоить.