vc6.0中运算符的一个有关问题

vc6.0中运算符的一个问题
书上一道题,求输出结果:
#include <iostream.h>
int fun(int x, int y)
{
return x*y;
}
void main()
{
int k=5;
cout<<fun(k++,++k)<<endl;
}

答案是36.
可我还是没太懂,求各位大侠帮忙解释下。
另外:这程序和下面这个难道不等价吗?

#include <iostream.h>
int fun(int x, int y)
{
return x*y;
}
void main()
{
int k=5;
int a,b;
a=k++;
b=++k;
cout<<fun(a,b)<<endl;
}

求分析,谢了

------解决方案--------------------
++k先运算
k++后运算
fun(k++,++k)相当于:
 a = k;
b = k;

a = k+1;
fun(b,a);
b = k+1;
------解决方案--------------------
函数参数中计算顺序是从右往左的