C中功能参数的评估顺序是什么?

我们将不同的参数传递给某些函数。现在我们可能会想到一个问题,那就是函数参数的评估顺序。是从左到右还是从右到左?

为了检查评估顺序,我们将使用一个简单的程序。这里传递了一些参数。从输出中,我们可以找到它们的评估方式。

范例程式码

#include<stdio.h>
void test_function(int x, int y, int z) {
   printf("The value of x: %d\n", x);
   printf("The value of y: %d\n", y);
   printf("The value of z: %d\n", z);
}
main() {
   int a = 10;
   test_function(a++, a++, a++);
}

输出结果

The value of x: 12
The value of y: 11
The value of z: 10

从此输出中,我们可以轻松了解评估顺序。首先取z,因此保持为10,然后取y,因此取11,最后取x。因此该值为12。