title: Purpose of Curly Brace Usage of C Code found in Linux (include/linux/list.h)?
body: <p>I came across the following code within Linux (include/linux/list.h). I'm confused about line 713. In particular, I don't understand ({ n = pos->member.next; 1; }). </p>
  
  <p>What is the curly braces doing? Why is there a '1' in this statement?</p>
  
  <p>If someone could explain this particular line it would be much appreciated. Note, I don't need an explanation of how link lists and #defines work, etc.</p>
  
  <pre><code>704 /**
  705  * hlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry
  706  * @pos:        the type * to use as a loop cursor.
  707  * @n:          another &amp;struct hlist_node to use as temporary storage
  708  * @head:       the head for your list.
  709  * @member:     the name of the hlist_node within the struct.
  710  */
  711 #define hlist_for_each_entry_safe(pos, n, head, member)                 \
  712         for (pos = hlist_entry_safe((head)-&gt;first, typeof(*pos), member);\
  713              pos &amp;&amp; ({ n = pos-&gt;member.next; 1; });                     \
  714              pos = hlist_entry_safe(n, typeof(*pos), member))
  715 
  </code></pre>