调用 C 函数之前的 C99 参数评估

C99 parameter evaluation before C function is called

我知道这个问题和this one类似,但我感觉我对C99标准没有完全理解。我想问的是参数求值本身,例如:

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

所以,似乎索引在函数调用之前没有递增(结果我得到了 some-text-0)。这是预期的行为吗?

通过使用 post 递增运算符(++ 跟在 index 之后),首先使用该值,然后递增。如果你想使用增量值,你应该使用预增量运算符(++index)。仅供参考,这可以追溯到最早的 C 版本。