0
这里很简单的C程序:后增量如何在c中工作?
int main()
{
int i = 22;
printf("%d %d %d",i,i++,i);
return 0;
}
结果是:
23 22 23
究竟岗位增量是在这里工作?
这里很简单的C程序:后增量如何在c中工作?
int main()
{
int i = 22;
printf("%d %d %d",i,i++,i);
return 0;
}
结果是:
23 22 23
究竟岗位增量是在这里工作?
根据您得到的结果来判断i ++是否被评估并返回预增值。然后,i的值,i ++的返回值和i的值被传递给打印函数。
这不是你应该依赖的东西,因为你可能会在不同的编译器或不同的优化设置下得到不同的答案。如在另一个答案中,参数评估的顺序是未定义的行为。
在这种情况下,您无法正确测试。
函数参数的参数评估顺序未定义,因此您将获得平台相关的结果。
i ++的实际工作方式是首先返回旧值并稍后递增,但这是一个糟糕的测试。
欢迎来到未定义的行为!这是一个神秘和痛苦的美妙之地。更多在这里:https://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points – user4581301
好点。 OP希望C. C和C++之间的规则有点不同,特别是在C++ 11之后。 – user4581301