- literales de cadena son lvalues, pero no se les puede cambiar
- rvalue, pero si se trata de un puntero y no es NULL, el objeto al que apunta es un valor-
El estándar C reconoce que los términos originales eran y derechos como en L = R
; sin embargo, dice pensar en lvalue como locator value, lo que significa que puede obtener la dirección de un objeto y, por lo tanto, ese objeto tiene una ubicación. (Ver 6.3.2.1 en C99.)
De la misma manera, el estándar ha abandonado el término rvalue, y solo usa "el valor de una expresión", que es prácticamente todo, incluyendo literales como ints, chars, flotantes, etc. Además, cualquier cosa que pueda hacer con un valor r se puede hacer con un lvalue también, por lo que puede pensar en todos los valores l como valores r.
No estoy seguro de qué quiere decir con "lvalue" y "rvalue". ¿Quiere decir que este valor puede pararse en el lado izquierdo o derecho del operador? En caso afirmativo, debe especificar su pregunta, porque puede escribir en todas las variables no const. el valor de retorno de la función es const. – Gaim
@Gaim: lvalue y rvalue son términos comunes con significados específicos. – jamesdlin
@Gaim: lvalue y rvalue son el nivel de especificación de compilador y lenguaje. En este caso, se refieren a la sintaxis de C. – Pod