关于下面的 “b=func(++i,++i,i);”为什么是从右向左开始算的?何解?

#include<stdio.h>
void main()
{int func(int x,int y ,int z);
int i=3,b;
b=func(++i,++i,i);
printf("%d\n",b);
}
int func(int x,int y,int z)
{printf("%d %d %d\n",x,y,z);
return(x+y+z);
}

慕婉清6462132
浏览 142回答 3
3回答

慕田峪4524236

因为函数参数的子表达式运算次序标准并没有限定,各个编译程序能够自行决定,vc一般从右往左算,Tc一般从左往右算

白衣染霜花

5,4,3,12这是运算结果,我用的是C-FREE,5,5,5,15这是VS2010运算的结果,问题就出在编译器的问题了,所以这个不是我们认为的问题了

小唯快跑啊

按我的理解,函数参数的运算次序应该跟b=j++,j++,j++;是一样的,都是从右到左。
打开App,查看更多内容
随时随地看视频慕课网APP