A expressão de erro C ++ deve ser um LValue modificável

A expressão de erro C ++ deve ser um LValue modificável

Ao escrever o código, vários erros podem ocorrer no momento da execução. Existem vários tipos de erros, como erros lógicos, erros de sintaxe e erros de compilação de tempo. Erros lógicos são difíceis de verificar, porque nenhum erro é exibido nesses tipos de erros, enquanto a sintaxe e os erros de tempo de compilação podem ser detectados no momento da execução. Neste guia, também discutiremos sobre o tipo “Erro: LValue exigido como operando esquerdo da atribuição” tipo de erro. Este erro ocorre principalmente enquanto compara duas variáveis ​​ou inteiros. Esse tipo de erro ocorre devido a um equívoco ou erro ao escrever o código. Às vezes, os programadores iniciantes têm conceitos errôneos sobre tarefas e operadores de comparação, devido aos quais enfrentam esse tipo de erro. Às vezes, durante a codificação, o programador faz errakea e usa o operador de atribuição em vez do operador de comparação. Isso é fácil de resolver porque na parte de saída, a descrição do erro que é LValue é necessária.

Sintaxe:

Não existe uma sintaxe tão específica para isso porque não faz parte do código. É o bug exibido na área de saída quando executamos o código. O seguinte é um exemplo de como esse erro se parece:

Erro: LValue exigido como operando esquerdo da atribuição

No erro mencionado anteriormente, o LValue significa que o objeto que pode ter um local de memória identificado. Também podemos dizer que ele tem um endereço especificado na memória onde é armazenado. Quando falamos sobre atribuição, ela pode armazenar os dados.

Exemplo 1:

Agora, implementamos um exemplo no qual geramos esse tipo de erro e resolvemos. Primeiro incluiremos o arquivo de cabeçalho iostream que permite ao compilador executar as operações de E/S. Depois disso, criamos três variáveis ​​inteiras dentro do método principal. O primeiro tipo de número inteiro é "a" ao qual atribuímos o valor "2". Atribuímos o valor "3" à segunda variável "B" igual à terceira variável que é "C", onde mantém o valor "3". Depois disso, usamos uma instrução if () para comparar as variáveis. Passamos duas condições: a primeira condição é que a variável "A" não é igual à variável "B". A segunda condição é que a variável "B" é igual à variável "C". Se ambas as declarações forem verdadeiras, ele exibe a mensagem "Comparação corresponde". Por fim, retornamos o valor nulo.

#incluir
usando namespace std;
int main ()

int a = 2;
int b = 3;
int c = 3;
se um != b && b = c)

std :: cout << "Comparison match" << std::endl;

retornar 0;

Após a execução do código, recebemos um erro que exibe que há um erro que mostra "LValue exigido como operando esquerdo da atribuição". Como sabemos, o erro ocorre on -line e o tipo de erro também indica que há um valor esquerdo (lvalue) necessário à esquerda do operando para o qual está apontando. Agora, resolvemos esse erro substituindo o operador de atribuição "=" pelo operador de comparação "= =". Então, executamos o código novamente.

Depois de executar o código novamente, obtemos esta saída que mostra que executamos o código sem ter nenhum erro. Isso mostra que nossas condições são verdadeiras.

Exemplo 2:

Vamos realizar outro exemplo para ter uma ideia melhor para resolver esses erros. Neste exemplo, criaremos três variáveis ​​e, tendo o modo de duas variáveis, então comparamos com o terceiro usando a instrução if-else. Se a comparação corresponde, ela se move dentro da instrução IF. Se não corresponder, executa a declaração else. Vamos dar uma olhada no nosso código em que incluímos primeiro nossos arquivos de cabeçalho e depois mudamos para a nossa função principal, onde declaramos as três variáveis ​​denominadas "Val1", "Val2" e "Val3" ao qual atribuímos os valores "2" , "3" e "5". Depois disso, usando a instrução IF, comparamos o modo de "Val1" e "Val2" variáveis ​​com a terceira variável, "Val3". Se isso corresponder, nosso código interno do IF é executado. Se não for verdade, a declaração else é executada. No final, executamos nosso código retornando o valor nulo.

#incluir
usando namespace std;
int main ()
int val1 = 2;
int val2 = 3;
int val3 = 5;
if ((val1%val2) = val3)

std :: cout << "Comparison is a match" << std::endl;

outro

std :: cout << "Comparison doesn't match" << std::endl;

retornar 0;

Depois de executar nosso código, descobrimos esse tipo de erro que indica que perdemos o LValue como o operando esquerdo da tarefa indica a variável "Val3". Isso significa que o LValue ausente está à esquerda da variável "Val3". Como o operador de comparação não é utilizado nesta instância e o operador de atribuição é usado, ocorre um erro. Mais uma coisa a ter em mente é que não podemos atribuir o valor a qualquer variável dentro da instrução if (). A instrução if () é usada para a comparação das variáveis ​​e não para atribuir os valores à variável. É por isso que exibe este erro. Agora, resolvemos esse problema substituindo o operador de atribuição pelo operador de comparação. Então, reexectamos o código.

Após a reexecução do nosso código, exibimos a mensagem - “A comparação não corresponde”. O motivo para receber esta mensagem é que as declarações de eliminação são executadas como visto no código anterior. Criamos três variáveis ​​às quais atribuímos os valores e o modo de dois valores é comparado com o terceiro. Aqui, o modo de "val1" e "val2" é "0.6 ”, comparando -o com o Val3, que mantém o número“ 5 ”. Não é verdade que o valor de "val3" é igual a "0.6 ”. O compilador ignora o código interno do IF e executa a instrução else.

Conclusão

Neste tutorial, discutimos o erro de compilação que provavelmente ocorre devido a um equívoco ou erro que é feito pelo programador. Explicamos o erro com uma breve descrição e com vários exemplos para facilitar isso para você ter uma idéia e o método para resolver e entender o tipo de erro. Fizemos todos os esforços para torná -lo o mais simples possível para você corrigir esse erro sempre que ele aparecer no seu código enquanto você está escrevendo um programa.