Please explain this ambiguity?
<blockquote>
  <p><strong>Possible Duplicate:</strong><br>
  <a href="http://stackoverflow.com/questions/7718508/order-of-evaluation-of-arguments-using-stdcout">Order of evaluation of arguments using std::cout</a>  </p>
</blockquote>



<pre><code>#include&lt;iostream&gt;
#include&lt;cstdio&gt;
#include&lt;cstring&gt;

using namespace std;

static int series_num;

void setint(int num) {
    series_num = num;
}

int ser() {
    series_num = series_num + 23;
    return series_num;
}

int main() {
    setint(50);
    cout &lt;&lt; ser() &lt;&lt; " " &lt;&lt; ser();
    getchar();
    getchar();
    return 0;
}
</code></pre>

<p>returns me 96 73</p>

<pre><code>#include&lt;iostream&gt;
#include&lt;cstdio&gt;
#include&lt;cstring&gt;

using namespace std;

static int series_num;

void setint(int num) {
    series_num = num;
}

int ser() {
    series_num = series_num + 23;
    return series_num;
}

int main() {
    setint(50);
    cout &lt;&lt; ser();
    cout &lt;&lt; ser() &lt;&lt; endl;
    getchar();
    getchar();
    return 0;
}
</code></pre>

<p>returns me 73 and 96</p>
