title: Parameter evaluation order before a function calling in C
body: <p>Can it be assumed a evaluation order of the function parameters when calling it in C ? According to the following program, it seems that there is not a particular order when I executed it. </p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  int main()
  {
     int a[] = {1, 2, 3};
     int * pa; 
  
     pa = &amp;a[0];
     printf("a[0] = %d\ta[1] = %d\ta[2] = %d\n",*(pa), *(pa++),*(++pa));
     /* Result: a[0] = 3  a[1] = 2    a[2] = 2 */
  
     pa = &amp;a[0];
     printf("a[0] = %d\ta[1] = %d\ta[2] = %d\n",*(pa++),*(pa),*(++pa));
     /* Result: a[0] = 2  a[1] = 2     a[2] = 2 */
  
     pa = &amp;a[0];
     printf("a[0] = %d\ta[1] = %d\ta[2] = %d\n",*(pa++),*(++pa), *(pa));
     /* a[0] = 2  a[1] = 2 a[2] = 1 */
  
  }
  </code></pre>