Function 调用C函数之前的C99参数求值

Function 调用C函数之前的C99参数求值,function,parameters,call,c99,evaluation,Function,Parameters,Call,C99,Evaluation,我知道这个问题类似于,但我觉得我不完全理解C99标准。我想问一下参数评估本身,例如: int index = 0; sprintf(somebuf, "some-text-%d", index++); 所以,似乎在函数调用之前索引并没有增加(结果是some-text-0)。它是预期的行为吗?通过使用后增量运算符(++后面是索引),首先使用值,然后递增。如果要使用递增的值,应该使用递增前运算符(++index)。仅供参考,这可以追溯到C的最早版本

我知道这个问题类似于,但我觉得我不完全理解C99标准。我想问一下参数评估本身,例如:

int index = 0;
sprintf(somebuf, "some-text-%d", index++);

所以,似乎在函数调用之前索引并没有增加(结果是some-text-0)。它是预期的行为吗?

通过使用后增量运算符(
++
后面是
索引),首先使用值,然后递增。如果要使用递增的值,应该使用递增前运算符(
++index
)。仅供参考,这可以追溯到C的最早版本