C++

C++ ERROR: lvalue Required as Left Operand of Assignment

Sometimes, we have to use conditional statements like the assignment operator “=”. There are two purposes of this operator: one is for assigning the value to any variable and the second one includes the combination of two “= =” which is used to compare two variables or values. In some cases, when we use these operators, it returns the error message “expression must be a modifiable lvalue”. This is the most typical C++ programming error that one might encounter. So, we don’t have to worry about it, it is not a big issue to face such kind of error. This error occurs when we are using conditional expressions and instead of the comparison “= =” operator. We use the assignment “=” operator. If the compiler meets this kind of situation, it displays the error message without executing it successfully.

To resolve such kind of error, we have to go through our code again to check the reason that causes this error. Sometimes, it becomes difficult to read the lengthy programs. To reduce this, we just check the line on which the error is occurring. The line which is having an error is also displayed to make it easy to find out.

Syntax:

error: lvalue required as left oprand of assignment

It is not the code or the method that is to be defined with a predefined syntax. It is just an error message that is displayed when the comparison operator is mixed with the assignment operator. Then, the message is displayed as an error that is shown above. In this error, “lvalue” is the value that will be appearing on the left side of that operator.

Example # 01:

Now, we will perform an example to check how this error occurs. And by using the correct line of code, we will remove this error too. Moving to our main code, we will first include our header files, the “iostream” that is used to perform various input-output operations like “cout”, “cin”, etc. After that, we included “using namespace std;” which means that we can use the variable names and the name of the objects that are provided by the standard libraries. Now, heading towards our main function, we have first declared an integer variable named “myvar” to which we assigned the value “5”.

In the next line, we used the if() statement to which we passed the condition “5=myvar” which we are using to compare the value “5” with the “myvar” variable. If the condition is met, it will display the message “The value of myvar is 5”. We will run the code using the “f7” command or by just clicking the “Run” button.

#include <iostream>
using namespace std;
int main()
{
  int myvar = 5;
  if ( 5 = myvar){
    std::cout << "The value of myvar is 5" << std::endl;
  }
}

Let us check the output of our code. As displayed in the snippet, the error is displayed which shows that there is an error inside the main function, the error type is displayed in the red colored text which tells the “lvalue required as left operand of the assignment”. It is not necessary that every time there is an error, the text will be same. In some version, it is displayed differently like “Error: expression must be a modifiable lvalue”. After the error line, the number of lines on which the error occurs is displayed. In our case, it is “6” also the error symbol indicates that the error occurs inside the if statement which means we have written the wrong condition inside the if statement. Now, let us remove the error and check what will happen after removing it.

For removing the error we have replaced the condition from “5 = myvar” with “5 = = myvar”. The condition we passed to generate the error code is used to assign the value to the variable. In the if() statement, we pass the condition of comparison type as a parameter. We cannot assign the value to the variable; that’s the reason of the occurrence of the error. After replacing the condition with the correct one we successfully displayed the inner code which was the message that is to be printed.

Example # 02:

In this example, we will create three variables and compare the result of the subtraction of two variables with the third one using the if() statement. If the condition is met, it will display the message. After including header files, we will create three integer variables “var1”, var2” and “var3” to which we assigned the values “10”, “4”, and “6”. Then, we called the if() statement which we passed the subtraction of the “var1” and “var2”. Using the operator “=”, we compare the resulting value of “var1-var2” with the “var3”. If the condition is met, it will move inside the if statement and executes the message that we have passed to the “cout” statement, that the “subtraction of var1 and var2 is equal to the var3”. Last, returning the null value to execute the code successfully.

#include <iostream>
using namespace std;
int main() {

    int var1 = 10;
    int var2 = 4;
    int var3 = 6;

    if ( (var1 - var2) = var3) {
        std::cout <<"subtraction of var1 and var2 is equal to the var3" << std::endl;
    }

    return 0;
}

After the execution of the code, we have an error displayed in the output section which shows that there is an error on line “8”. The type of error is “lvalue required as left operand of assignment”. This means that the left value is required at the left side of the assignment operator so that we haven’t passed the value to the variable. Instead, we have to compare the value because if() statement is used to compare the conditions not to assign the values to the operator. Now we will solve the error by placing “= =” instead of “=”.

After replacing the comparison operator with the assignment operator, we get the desired output. The subtraction of “var1” and “var2” is “6” and the value of “var3” is also “6” when the if statement compares them both it becomes true. So, the compiler moves inside the if statement and displays the message.

Conclusion

In this tutorial, we studied the error that may occur due to the carelessness of the coder or sometimes it occurs due to the misconception between the assignment and the comparison operators by new coders. With the help of examples, we briefly discussed the method to resolve this kind of error, and also the way to find the error.

About the author

Omar Farooq

Hello Readers, I am Omar and I have been writing technical articles from last decade. You can check out my writing pieces.