原因:
https://blog.csdn.net/xv1356027897/article/details/81608267
汇编指令了解:
https://www.cnblogs.com/lxgeek/archive/2011/01/01/1923738.html
void func(int a, int b)
{
}
int main()
{
int i = 1;
//printf("%d %d\n", ++i,++i); //i++返回的是临时量,但++i返回的是i本身;
//i = 1; i++(临时量为1,i为2); i++(临时量为2,i为3);
//i = 1; ++i(i本身为2); ++i(i本身为3);
func(++i, ++i); //编译器在进入函数之前将两个++i都做了,从汇编可以看出来
int j = 1;
//printf("%d %d\n", j++, j++); //函数传参是从右往左,但给参数列表赋值时是从左往右
func(j++, j++); //和func(++i, ++i)生成的汇编代码不同
return 0;
}