Условие для значений и значений в С

Вот несколько определений, которые я прочитал о lvalues

Выражения, которые можно использовать с оператором &. Т.е. если & (выражение) не является ошибкой, то выражение является lvalue

Выражение, которое приводит к объектам, которые не являются временными

Выражения lvalue могут использоваться как в RHS, так и в LHS оператора =

Выражения rvalue могут использоваться только в RHS

Пожалуйста, исправьте, если ошиблись

Вот вопрос

Я читаю ++ х это lvalue и х ++ это rvalue

int i = 0;
printf("%p",(void*)&++i);

Если так, то почему это ошибка?

Если выражения lvalue могут использоваться на lhs

int i = 0;
++i = 10;

Почему я не могу использовать приведенное выше утверждение ?? Оба приведенных выше приводят к ошибкам

Обновление: оба вышеупомянутых утверждения хороши в C ++

Ответы на вопрос(5)

Ваш ответ на вопрос