title: return- and return! in C
body: <p>While looking through puzzles and answers in the code golf Q&amp;A section, I came across <a href="https://codegolf.stackexchange.com/a/12201">this solution</a> for the longest and most obscure ways to return 1</p>
  
  <p>Quoting from the answer,</p>
  
  <pre><code>int foo(void) {
      return! 0;
  }
  
  int bar(void) {
      int i=7;
      while (i --&gt; 0);
      return-i;
  }
  </code></pre>
  
  <p>The --> 'operator' is already well-known :), but I couldn't find any info on <code>return! 0;</code> and <code>return-x;</code> where I'm guessing <code>x</code> could be any variable</p>
  
  <p>Do they really exist, and what do they mean? Does it have anything to do with precedence?</p>