Значение L против значения R в C
Я отвечаю на вопрос из учебникаэтот учебник.
Я узнаю об указателях на C и натолкнулся на l-значения и r-значения. Из моего понимания:
l-values are values that are defined after they are executed (++x)
r-values are values that are not defined after they are executed (x++)
Это что правильно?
Вопрос, на который я хотел ответить (с моими попытками):
a) Which of the following C expressions are L-Values?
1. x + 2 Not a L value
2. &x Is a L value
3. *&x Is a L value
4. &x + 2 Not a L value
5. *(&x + 2) Is a L value
6. &*y Is a L value
b) Is it possible for a C expression to be a L-value but NOT a R-value? Explain
I've read that a L value can be a R value but not vice versa. I can't think of an example of something being an L value but not a R value.
c) Is &(&z) ever legal in C? Explain
Assuming this is not legal since a memory address doesn't have its own memory address?
Я рядом? Спасибо