可能重复:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)
function parameter evaluation order
在这里输入代码在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=10
而不是a++
所以现在a=11
比++a
现在更a=12
而不是传递a=12
所以在打印功能中打印12 10
答案 0 :(得分:6)
功能参数的评估顺序为未指定 c标准为实现提供了充分的自由来评估它们:
此外,不需要实现来指定它遵循的顺序。
参考文献:
C99标准6.5.2.2函数调用
第10段:
函数指示符的评估顺序,实际参数和 实际参数中的子表达式未指定,但有一个序列点 在实际通话之前。
C99标准3.19:
未指明的行为
本国际标准提供两种或更多种可能性并且在任何情况下都没有选择要求的行为。示例未指定行为的示例是函数的参数的顺序 评估。