title: Variable number argument list starts on its second entry
body: <p>In Visual Studio 2012, when I run the following code, which just calculates the average of numbers, gives an erroneous answer. The <code>for</code> loop - for some reason - starts on <code>Number = 1</code> and goes one entry beyond <code>Number = 9</code>.</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdarg.h&gt;
  
  float avg(int Count, ...)
  {
      va_list Numbers;
      va_start(Numbers, Count);
      int Sum = 0;
      for(int i = 0; i &lt; Count;  ++i)
      {
          int entry = va_arg(Numbers, int);
          printf("%d   %d\n", i, entry);
          Sum += entry;   
      }
      va_end(Numbers);
  
      float av = Sum/Count;
      return(av);
  }
  
  int main()
  {
      float Average = avg(10, 1, 2, 3, 4, 5, 6, 7, 8, 9);
      printf("The average of the first 10 whole numbers: %f\n", Average);
  }
  </code></pre>
  
  <p>I checked e.g. <a href="https://stackoverflow.com/questions/205529/passing-variable-number-of-arguments-around">Passing variable number of arguments around</a> but I can't figure out why <code>va_arg</code> pulls the second entry from <code>Numbers</code> first. The result of this code on my machine is:</p>
  
  <pre><code>0   1
  1   2
  2   3
  3   4
  4   5
  5   6
  6   7
  7   8
  8   9
  9   790803
  The average of the first 10 whole numbers: 79084.000000
  </code></pre>