Red de conocimiento informático - Conocimiento informático - La diferencia entre lvalue y rvalue

La diferencia entre lvalue y rvalue

En el proceso de aprendizaje del lenguaje C, es posible que haya escuchado los conceptos de valor l y valor r. Incluso al depurar el programa, el compilador dará "el operando izquierdo debe ser valor l", es decir, izquierdo. operación ¡El número debe ser un valor l! ¡Hoy te explicaremos en detalle estas dos palabras y la diferencia entre ellas!

En pocas palabras, lo que está a la izquierda del operador de asignación "=" es el valor l, y lo que está detrás del operador de asignación "=" es el valor r. Parece una tontería, pero lo es. muy fácil de entender. Pero la mayoría de las veces, estamos aquí para aprender y comprender la diferencia entre valores l y valores r en diferentes situaciones. ¡Aquí hay algunos ejemplos para explicar en profundidad, para saciar la sed de todos!

1. La diferencia entre lvalue y rvalue para variables:

Por ejemplo, x = 2

Aquí x es una variable entera, aquí como un lvalue; , Representa es una unidad de memoria, que representa la dirección.

Otro ejemplo es x = y;

Ahora observe la situación en la que la variable es un rvalue e y es un rvalue. Aquí ya no representa la dirección, sino el valor. en la unidad de memoria! Luego asígnalo a x.

2. La diferencia entre constantes como valores l y valores r:

Continuar x = 2;

Aquí 2 es un valor r, 2 es una constante, No. Cualquier pregunta.

Y si 1 = 2;

Aquí miramos el valor l, 1 es una constante, habrá un problema aquí y la compilación informará un error. ¡Porque las constantes no se pueden modificar ni asignar valores! Es posible que haya escuchado o visto "valores l modificables/no modificables".

3. La diferencia entre los nombres de matriz como lvalues ​​y rvalues:

Por ejemplo, hay una matriz de caracteres char a[100];

Cuando a se usa como rvalue, podemos asignarlo a un puntero de tipo char * para que apunte a esta matriz. En este caso, el nombre de la matriz como rvalue representa la primera dirección del primer elemento de la matriz, que es una constante. , lo cual es completamente aceptable.

El nombre de la matriz, ya sea rvalue o lvalue, representa una dirección y una constante, por lo que no puede ser un lvalue porque las constantes no se pueden modificar. Por lo tanto, es un error para muchos estudiantes intentar definir una matriz y luego asignarle una cadena.

4. Constantes de cadena como rvalues

Todos deben saber que las constantes de cadena son cadenas entre comillas dobles, ya que también son constantes, no se pueden usar como rvalues. sobre hacer rvalue?

La respuesta es que representará la primera dirección de la ubicación de almacenamiento de la cadena en la memoria. Esa es la razón del uso de char * p = “dotcpp.com”;

Espero que los cuatro anteriores sean útiles para que todos tengan una comprensión más profunda de los valores l y rvalues. Si tiene alguna pregunta, no dude en dejar un mensaje para discutirla.