Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在for循环中,在循环控制变量的总迭代量方面,前后递增是否存在差异?_C++_For Loop_Increment_Post Increment_Pre Increment - Fatal编程技术网

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;}