当不涉及其他操作时,前缀与后缀递增?
Prefix vs. Postfix increment when no other operation is involved?
++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;
对比
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/