title: Precedence of 'or' and 'and' operators in C
body: <p>In the following code, I am getting 10 | 1 | 1 as a result. But according to precedence rules shouldn't 'and' operator must be evaluated first?(and yield c=9) Like : d = a || (--b)&amp;&amp;(--c) since 'and' has higher precedence. ( or shortcutting breaks precedence rules ?)Thanks in advance.</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  
  int main(){
      int a,b,c,d;
      a =1;
      b = c = 10;
      d = a|| --b&amp;&amp;--c;
      printf("%d\n",c);
      printf("%d\n",a);
      printf("%d\n",d);
      return 0;
  }
  </code></pre>