++i;
对比
i++;
使用前缀增量或使用后缀增量是否会对给定的两个语句产生影响(重点是那里不涉及其他操作,除了递增变量)?
++i;
对比
i++;
使用前缀增量或使用后缀增量是否会对给定的两个语句产生影响(重点是那里不涉及其他操作,除了递增变量)?
在这两种情况下,最终结果完全相同。++i 和 i++ 的使用在这方面没有区别。但是,可能存在性能差异;虽然,这些几乎可以忽略不计。
基本上,++i 保证和 i++ 一样快;但是,不能保证 i++ 与 ++i 一样快。因此,如果您不需要中间值[例如当 ++i 或 i++ 是单个语句时],则首选 ++i。大多数常见的编译器可能会优化这种差异,但规范清楚地说明了不同的行为和保证。换句话说,i++ 可能会做一个额外的不必要的步骤。
// The compiler turns i++ into the following
int temp = i;
i = i + 1;
return temp;
相对:
// The compiler turns ++i into the following
i = i + 1;
return i;
有关这方面的详细参考,请参阅http://fairwaytech.com/2012/03/prefix-vs-postfix-increment-and-decrement-operators-in-c/
不,它只是将 i 的值加一,仅此而已。