La diferencia entre lvalue y rvalue
En términos sencillos. Tomando el símbolo de asignación como límite =, =izquierda es un valor l y =derecha es un valor r. Por ejemplo: (1) int b = 3; (2) int a = b; el código en la línea (2), donde a es el valor de la izquierda y b es el valor de la derecha.
En un nivel más profundo, la L del valor L puede entenderse como Ubicación, que significa ubicación y dirección. Comprenda la R del valor R como Lectura, lo que significa leer datos. Los datos de la computadora ahora se almacenan en la memoria. La memoria tiene dos propiedades muy básicas: la dirección de la memoria y los datos almacenados en la memoria. Imagina exactamente la misma caja. Cada caja tiene un número para identificar qué caja es y qué se puede colocar dentro. La dirección de la memoria equivale al número de serie de la caja y los datos de la memoria equivalen al contenido de la caja.
Después de compilar el nombre de la variable, se asignará a una dirección de memoria. Si observamos el significado de a = b, en realidad significa poner los "datos en la memoria en la dirección B" en la memoria en la dirección A.
Nombre chino
Lvalue y rvalue
Nombre extranjero
Lvalue y rvalue
Rápido
Navegación
Lista de casos
Notas de aplicación
Información básica sobre lvalues y rvalues
En En el C/C idioma, las variables que se pueden colocar en el lado izquierdo del símbolo de asignación tienen unidades de almacenamiento correspondientes. El usuario puede acceder a estas unidades de almacenamiento y el usuario puede cambiar el número de sus valores. Un valor l representa un objeto almacenado en la memoria de la computadora, en lugar de una constante o el resultado de un cálculo. O el valor l representa un valor de dirección de memoria a través del cual la memoria se puede leer y escribir (principalmente escribible, por eso se puede asignar el valor l); Rvalue correspondiente: Cuando un símbolo o constante se coloca al lado derecho de un operador, la computadora lee su "rvalue", que es el valor real que representa. En pocas palabras, lvalue es equivalente al valor de la dirección y rvalue es equivalente al valor de los datos. Un rvalue es una referencia a datos almacenados en una dirección de memoria.
Listado de casos
Por ejemplo: int ia, IB
IB = 0
ia = ib
<; p > Aquí, primero defina ia e ib. Luego asigne un valor a ib. En este momento, la computadora toma el valor l de ib, que es la ubicación de memoria representada por este símbolo, es decir, el valor de la dirección de memoria. La computadora toma el valor r de 0, que es el valor 0 y luego asigna el valor de ia; a ib, y luego asigna el valor r de ib. Tome el valor izquierdo de ia;Entonces, los valores izquierdo y derecho de ib se basan en su posición;
Esto también es una parte interesante del lenguaje formal.
Notas de aplicación
Conversión de valor L y valor r:
La L en valor L se refiere a la posición, lo que significa direccionable. Valores con direcciones (informática).
La R en valor R se refiere a Lectura, que significa legible. En informática, un valor que no tiene dirección en los lenguajes informáticos.
Los valores L y rvalues son relativos a expresiones de asignación. Un valor l es una expresión que puede aparecer en el lado izquierdo de una expresión de asignación. Las expresiones de valor L se pueden dividir en valores L de lectura y escritura y valores L de solo lectura. Un rvalue es una expresión que puede aparecer en el lado derecho de una expresión de asignación. Puede ser una cantidad temporal o literal que no ocupa espacio de memoria, o una entidad espacial que no tiene permiso de escritura. Como
int a = 3;
const int b = 5;
a = b 2; //a es un valor l y b 2 es un valor.
b = a 2; //¡Incorrecto! b es un valor l de solo lectura, pero no tiene permiso de escritura y no puede aparecer en el lado izquierdo del símbolo de asignación.
(a = 4) = 28; //a=4 es una expresión de valor l, 28 es una expresión de valor r y = es el operador de asignación.
34 = a 2; //¡Incorrecto! 34 es un valor literal y no se puede tomar desde la izquierda.