C++ 在C++;哪一个更重要;“高效”;在非基元类型上,前增量(+;+;i)或后增量(i+;+;)

C++ 在C++;哪一个更重要;“高效”;在非基元类型上,前增量(+;+;i)或后增量(i+;+;),c++,C++,可能重复: 我今天参加了一次面试,面试官问了我这个问题 < C++ >在非本原类型上更有效,预增量(++i)或后增量(i++)。我的回答是“预增量”,但无法给出确切的原因 我在互联网上搜索过,发现预增量更有效。但我不明白原因。谁能给我解释一下原因吗 例: for(;c.value()!=21;++c) 或 对于(;c.value()!=21;c++)预增量(++i)通常更快,因为后增量返回当前值,然后再增加值,而预增量只是增加变量 在许多情况下,编译器无论如何都会对此进行优化,除非您专门使用“

可能重复:

我今天参加了一次面试,面试官问了我这个问题

< C++ >在非本原类型上更有效,预增量(++i)或后增量(i++)。我的回答是“预增量”,但无法给出确切的原因

我在互联网上搜索过,发现预增量更有效。但我不明白原因。谁能给我解释一下原因吗

例:

for(;c.value()!=21;++c)

对于(;c.value()!=21;c++)

预增量(
++i
)通常更快,因为后增量返回当前值,然后再增加值,而预增量只是增加变量


在许多情况下,编译器无论如何都会对此进行优化,除非您专门使用“增量后”来使用当前值并在之后增加值。

这一点以前已经讨论过几百次了。答案是这取决于它,但对于基本类型,它通常是完全相同的。因为在发布您的答案时,您的答案是不准确的(并非所有情况下,预增量都比后增量快)。您在那之后编辑了它,以便更准确。可能下一票是因为这个答案传播了一个神话,即后增量在返回值后增加值。Post increment在返回之前增加值,但返回旧值。@PreetKukreti:我不是向下投票人,但一个可能的原因是,除了回答一个不应该重新回答的问题(除非有新的问题要回答)之外,你的回答是不正确的。通常情况下,增量后对返回原始值和增加值施加顺序是不正确的。这样的顺序对于用户定义的运算符是必需的,但对于内置运算符则不是