title: C bitwise precedence and associativity
body: <pre><code>#include &lt;stdio.h&gt;
  
  int main() {
      int a = 1;
      int b = a || (a | a) &amp;&amp; a++;
      printf("%d %d\n", a, b);
      return 0;
  }
  </code></pre>
  
  <p>when I ran this code the results were <code>1</code> and <code>1</code>.</p>
  
  <p>According to the C language Operator Precedence the operation <code>&amp;&amp;</code> is supposed to happen before the operation <code>||</code>. So shouldn't the result be <code>2</code> <code>1</code> ? (<code>a = 2, b = 1</code>)</p>