title: Why does "for(;i<=10;i++)" work but "for(i=0;i<=10;;)" doesn't?
body: <p>Why does the first program below work but the second doesn't? I mean, the second program gives an error </p>
  
  <blockquote>
    <p>"expected expression before ';'"</p>
  </blockquote>
  
  <p>But why then it doesn't give the same for <strong>"for(;i&lt;=10;i++)"</strong> as there too the first expression is missing? Doesn't the <strong>";;"</strong> in <strong>"for(i=0;i&lt;=10;;)"</strong> of the second program signify a blank expression? And finally, why <strong>"for(i=0;i&lt;=10;)"</strong> works then upon removing the second semicolon?</p>
  
  <pre><code>//Program 1
  #include&lt;stdio.h&gt;
  
  int main()
  {
  int i=1;
  for(;i&lt;=10;i++)
  {
  printf("%d\n",i);
  }
  }
  
  //Program 2
  #include&lt;stdio.h&gt;
  
  int main()
  {
  int i;
  //for(i=1;i&lt;=10;) // This works but following doesn't
  for(i=1;i&lt;=10;;) 
  {
  printf("%d\n",i);
  i++;
  }
  }
  </code></pre>