C++ 在for循环中,在循环控制变量的总迭代量方面,前后递增是否存在差异?
当我编译并运行下面的代码时,用C++ 在for循环中,在循环控制变量的总迭代量方面,前后递增是否存在差异?,c++,for-loop,increment,post-increment,pre-increment,C++,For Loop,Increment,Post Increment,Pre Increment,当我编译并运行下面的代码时,用计数器+++或++counter代替x,输出是相同的;在这两种情况下,数字1-10: for (int counter = 1; counter < 11; x) { std::cout << counter << endl; } for(整数计数器=1;计数器
计数器+++
或++counter
代替x
,输出是相同的;在这两种情况下,数字1-10:
for (int counter = 1; counter < 11; x)
{
std::cout << counter << endl;
}
for(整数计数器=1;计数器<11;x)
{
std::cout没有区别。在较旧的编译器中,++counter
速度更快,因为它没有创建临时变量,但所有现代编译器都可以对此进行优化。对于具有自定义(非内联)增量运算符的重对象,++counter
仍然可以更高效
至于何时进行评估:
for (initialization; condition; increment/decrement)
code;
被评估为
{
initialization;
while (condition)
{
code;
increment/decrement;
}
}
循环的C++可以大致被看作是下列语法糖(使用例子):
int计数器=1;
while(计数器<11)
{
std::coutcounter++创建一个拷贝递增计数器并返回值
++计数器增加计数器并返回计数器
循环中
for(initialization;condition;increment/decrement)
{body;}
增量/减量是循环的最后一行。因此,当增量/减量返回值时,它将再次启动循环。因此,增量后或增量前不会在此处产生影响。请参见此
简言之:不,迭代次数没有任何区别。请参阅。在循环的那个位置,它们是等效的。还要注意,编译器几乎肯定会在那个位置将后增量与前增量交换,至少在启用优化时是这样。您可以在这里查找更多示例:@StenSoft谢谢帮助!请注意,在devug构建中,++
pre的速度要快得多:而且速度非常慢的调试构建可能会让人讨厌。对我来说,这就像是一个无限循环。这里的x将被++计数器或计数器++所取代。我遵循海报中建议的惯例。
for(initialization;condition;increment/decrement)
{body;}