Errore "valore l richiesto".
Domanda
Quando riceviamo l'errore "valore l richiesto"...durante la compilazione del programma C++???(sto usando VC++)
Soluzione
Un "lvalue" è un valore che può essere l'obiettivo di un'assegnazione.La "l" sta per "sinistra", come nella parte sinistra del segno di uguale.Un rvalue è il valore della mano destra e produce un valore e non può essere assegnato direttamente.Se ottieni "lvalue richiesto" hai un'espressione che produce un rvalue quando è richiesto un lvalue.
Ad esempio, una costante è un rvalue ma non un lvalue.COSÌ:
1 = 2; // Not well formed, assigning to an rvalue
int i; (i + 1) = 2; // Not well formed, assigning to an rvalue.
non funziona, ma:
int i;
i = 2;
Fa.Tieni presente che puoi restituire un lvalue da una funzione;ad esempio, puoi restituire un riferimento a un oggetto che fornisce un operator=().
Come sottolineato da Pavel Minaev nei commenti, questa non è una definizione formale di lvalue e rvalue nel linguaggio, ma tenta di fornire una descrizione a qualcuno confuso su un errore nell'utilizzo di un rvalue dove è richiesto un lvalue.Il C++ è un linguaggio con molti dettagli;se vuoi diventare formale dovresti consultare un riferimento formale.
Altri suggerimenti
Questo accade quando si sta cercando di assegnare a qualcosa (come il risultato di una funzione scalare) che non è possibile assegnare a.
In genere uno abituato a C ++ potrebbe codice
if ((x+1)=72) ...
al posto di
if ((x+1)==72) ...
i primi mezzi 72 per assegnare x + 1 (chiaramente non valido) rispetto al test per la parità tra 72 e (x + 1)
Si sta tentando di utilizzare un valore non valido per l-value da qualche parte nel codice. Un l-value è un'espressione a cui può essere assegnato un valore.
Per esempio, si potrebbe avere una dichiarazione simile al seguente:
10 = x;
in cui si dovrebbe invece avere:
x = 10;
Anche se non è probabilmente questa evidente nel vostro caso.
prendere ad esempio
* int a = 10, b = 20;
int c = ++ ( b + 1); sopra il codice darà errore perché all'interno della staffa si dispone di un'espressione ont che si vuole fare un'operazione di incremento che non è possibile. Quindi, prima di fare di fare che si deve memorizzare tale valore in una certa variable.so sopra codice di errore " lvalue " necessaria.
Provare a compilare:
5 = 3;
e si ottiene error: lvalue required as left operand of assignment
R Il valore è un'espressione che appaiono sempre sul lato destro di un operatore di assegnamento Ad esempio:
int a = 5; // qui 5 è rvalue
L Valore è un'espressione che può sia venire sul lato sinistro o destro di un assignment.When è in sul lato sinistro si riferisce ad un luogo che può contenere un valore.
Qui
a
nell'espressionea = 5
è L Valore
e quando appare sul lato destro valore viene letto dalla L Valore. Poiché il valore R che non ha possibilità di localizzare qualsiasi memoria non può contenere qualsiasi valore come lValue così
5 = 6 o 5 = a
sarà errore del compilatore.
Si assegna valore a una variabile. Se cerchiamo di fare la cosa inversa si verificano poi gli errori di L-valore.
int x,y,z;
x=1;
y=2;
z=x+y; //Correct
x+y=z; //L-value required
Ho avuto un problema simile e ho scoperto che il problema è stato che ho usato un unico '=' invece di una doppia '==' in un'istruzione if
Errore lvalue:
if (n = 100) { code } // this is incorrect and comes back with the lvalue error
corretta:
if (n == 100) { code } // this resolved my issue
Questo succede quando si tenta di manipolare il valore di una costante può essere incrementi o decrementi, che non è permesso. `
#define MAX 10
void main(){
int num;
num = ++MAX;
cout<<num;
}