Valor L vs valor R en C
Estoy respondiendo una pregunta de un libro de texto deeste libro de texto.
Estoy aprendiendo sobre punteros en C y me he encontrado con valores l y valores r. Desde mi entendimiento:
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++)
¿Es eso correcto?
La pregunta que quería responder (con mis intentos):
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?
¿Estoy cerca? Gracias