采用左值操作数的运算符的结果是一个左值,表示该左值操作数?

在阅读Bjarne的CPP书籍时,我遇到了这样一条语句:“使用左值操作数的运算符的结果是一个表示左值操作数的左值”,我实在无法绕开它。这些是此语句包含的示例:

void f(int x, int y)
{
    int j = x = y; // the value of x=y is the value of x after the assignment
    int∗ p = &++x; // p points to x
    int∗ q = &(x++); // error : x++ is not an lvalue (it is not the value stored in x)
    int∗ p2 = &(x>y?x:y); // address of the int with the larger value
    int& r = (x<y)?x:1; // error : 1 is not an lvalue
}

Code itself makes sense to me, but it makes sense from my personal understanding of how these operators work. But I can't really apply the statement here, for example for the first line. OK, = is an operator which can take both lvalue and rvalue operands (and from my understanding lvalue is implicitly converted to rvalue in this case) , then the result of x = y is an lvalue denoting y? If I follow this correctly, then I could write int* j = x = y, but this would be a compile-time error, as the result of x = y is clearly an rvalue. So I am really confused here.

任何人都可以逐步阐明此声明的语义以及它与给定示例的关系吗?