title: How does `({...})` return a value?
body: <p>I recently found this GCC macro:</p>
  
  <pre><code>#define max(a,b) \
     ({ typeof (a) _a = (a); \
         typeof (b) _b = (b); \
       _a &gt; _b ? _a : _b; })
  </code></pre>
  
  <p>I didn't realize before I saw this code, that a block of code <code>{...}</code> can somehow return value in C.<br>
  <strong>1) Could you give me a hint how this works?</strong></p>
  
  <p>Though, I usually was able to achieve the same result by abusing the comma operator:</p>
  
  <pre><code>#define max(a,b) \
      (typeof (a) _a = (a), \
       typeof (b) _b = (b), \
       (_a &gt; _b ? _a : _b)) 
  </code></pre>
  
  <p>or if it was only for side-effect I would use <code>do { ... } while(0)</code></p>
  
  <p><strong>2) What is the preferred way of doing this?</strong></p>