title: How are operators with the same precedence in C evaluated?
body: <p>In the context of C operators precedence. In reality, the following code will be evaluated as follows:</p>
  
  <pre><code>int32_t * result = (int32_t *) addr_base + offset;
  
                          |
                          |
                          ↓
  
  int32_t * result = ((int32_t *) addr_base) + offset;
  </code></pre>
  
  <p>However, what I see in the table bellow is that <code>cast</code> and <code>+</code> should be evaluated from right to left. In other words, in my example <code>+</code> is right to <code>cast</code>, so I would expect that the first statement above will be evaluated like this:</p>
  
  <pre><code>int32_t * result = (int32_t *) (addr_base + offset);
  </code></pre>
  
  <p>As <code>+</code> is on the right side of <code>cast</code> (so more priority according to the table).</p>
  
  <p>Why is that actually happening?</p>
  
  <p><a href="https://i.stack.imgur.com/pXGje.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/pXGje.png" alt="enter image description here"></a></p>