title: Assigning when returning a value
body: <p>I'm not understanding a function used by my co-worker. He cannot
  He is using strange return blocks.</p>
  
  <pre><code>block_t *get_block(void *p)
  {
      char *tmp;
      tmp = p;
      return (p = tmp -= 16);
  }
  </code></pre>
  
  <p>He says it is supposed to return form and the address.</p>
  
  <p>Need some help to understand the return ! Thanks a lot :)</p>