title: How does 'if((x) || (y=z))' work?
body: <p>I don't quite understand how the if statement in this case works. It evaluates the <code>x != 0</code> statement and when that is not true anymore, it assigns <code>z</code> to <code>y</code> and then <code>break</code>s the if statement?</p>
  
  <pre><code>int main()
  {
      int x, y, z, i;
      x = 3;
      y = 2;
      z = 3;
  
      for (i = 0; i &lt; 10; i++) {
          if ((x) || (y = z)) {
              x--;
              z--;
          } else {
              break;
          }
      }
  
      printf("%d %d %d", x, y, z);
  }
  </code></pre>