title: assignment works as a condition
body: <p>Consider the following Code,   </p>
  
  <pre><code>int i;
  while(i=0)
      printf("Hello");
  </code></pre>
  
  <p>Now Generally speaking i=0 is an <code>assignment</code> and not a <code>condition</code> for <code>while</code> to check.
  But the <code>GCC</code> compiler lets it go with a warning and even evaluates it correctly (does not execute the print statement).</p>
  
  <p>Why? I usually would do with parenthesis for the truth value but my juniors feel that I am wrong and there is no real reason for the parenthesis in this!</p>
  
  <p>EDIT: Zeroing down on the 'actual' doubt, Please consider the following test case </p>
  
  <pre><code>int callme(){
      return 0;
  }
  
  int main(int argc,char*argv[]){
      int c;
      while(c = callme()){
          printf("Calling...\n"); 
      }
      return 0;    
  }
  </code></pre>