0

可能重复:
任何人都可以解释这些未定义的行为(i = i++ + ++i,i = i++ 等)
函数参数评估顺序

在此处输入代码在C语言中函数的执行是从右到左还是从左到右?我发现它是从右到左的。(函数的执行意味着它传递参数的顺序)。

所以我想知道c中是否有任何函数或任何内置函数从左到右执行?

例子:-

#include<stdio.h>
int print(int a,int b);
int main()
{
    int a=10,b=20;
    print(++a,a++);
    getch();
    return 0;
}

int print(int a,int b)
{
    printf("%d %d",a,b);
}

因此,在此它从右侧开始并通过a=10a++现在a=11 比现在比++a现在a=12比它在打印功能中传递a=12它打印12 10

4

1 回答 1

7

函数参数的求值顺序是Unspecified
c 标准为实现提供了充分的自由来评估它们:

  • 从左到右或
  • 从右到左或
  • 任何其他魔法命令

此外,实现不需要指定它遵循的顺序。


参考:

C99 标准 6.5.2.2 函数调用
第 10 段:

函数指示符、实际参数和实际参数中的子表达式的求值顺序未指定,但在实际调用之前有一个顺序点。

C99 标准 3.19:


本国际标准提供了两种或多种可能性并且在任何情况下都没有选择任何要求的 未指定行为。

示例未指定行为的一个示例是计算函数参数的顺序。

于 2012-10-02T06:13:32.257 回答