San*_*ede 6 c function-call order-of-execution
我正在学习C,因此尝试了以下代码,并获得了7,6而不是的输出6,7。为什么?
#include <stdio.h>
int f1(int);
void main()
{
int b = 5;
printf("%d,%d", f1(b), f1(b));
}
int f1(int b)
{
static int n = 5;
n++;
return n;
}
Run Code Online (Sandbox Code Playgroud)
Bat*_*eba 12
函数参数的求值顺序在C中未指定(请注意,这里没有未定义的行为;例如,不允许同时对参数求值。)
通常,对参数的求值是从右到左或从左到右。
根据经验,如果该函数有副作用(如您的情况),或者如果您两次传递相同的参数(允许您在调用站点中进行某些操作),则不要在函数参数列表中两次调用相同的函数被修改(例如传递一个指针)。
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |