函数参数传递的方向:从右往左

先写一个小代码:

   void fun(int i, int j)
{
     
	printf("%d %d\n", i, j);
}

int main()
{
     
	int i = 1;
	fun(i++, i++);
	return 0;
}

代码运行的结果大家都能猜出来,但是其实这有两种答案:
一种是 2 1
一种是 1 2
为什么呢?其实跟我们所使用的编译器有关,绝大多数的编译器中函数传参是从右 -> 左来传,而有极少数的是从左 -> 右
例如以下这几种常用的编译器就是从右 -> 左:
Microsoft Visual Studio 12.0
Dev-C++
Linux

它们的运行结果如下:
函数参数传递的方向:从右往左_第1张图片
函数参数传递的方向:从右往左_第2张图片

你可能感兴趣的:(C)