title: What's the point of evaluating left operand of assignment operator in C?
body: <p>According to ISO C11 - 6.5.16.3, it says that</p>
  
  <blockquote>
    <ol start="3">
    <li>An assignment operator stores a value in the object designated by
    the left operand. An assignment expression has the value of the left
    operand after the assignment, but is not an lvalue. The type of an
    assignment expression is the type the left operand would have after
    lvalue conversion. The side effect of updating the stored value of the
    left operand is sequenced after the value computations of the left and
    right operands. The evaluations of the operands are unsequenced.</li>
    </ol>
  </blockquote>
  
  <p>So I guess this means that, for example,</p>
  
  <pre><code>int x = 10;
  x = 5 + 10;
  </code></pre>
  
  <ol>
  <li>Left operand <code>x</code> is evaluated to 10 and right operand is evaluated to 15. </li>
  <li>Right operand value is stored in the object designated by the left operand <code>x</code>.</li>
  </ol>
  
  <p>But if the purpose of the assignment is to store the evalauted value of right operand(just like in step2), why is evaluation of left operand necessary? What's the point of evaluating the left operand? </p>