展开这个C ++方法

时间:2016-04-12 18:58:43

标签: c++

我正在尝试理解C++中的代码。我找到了这个循环:

for (i = 1, prev = fcu->bezt, bezt = fcu->bezt + 1; i < fcu->totvert; i++, prev = bezt++) {
   // do something

此循环有多个声明。从来没有见过。

这相当于

for (i = 1; i < fcu->totvert; i++) {
  prev = fcu->bezt;
  bezt = fcu->bezt + 1;

  // do something

  prev = bezt++

}

感谢

6 个答案:

答案 0 :(得分:3)

实际上更像是:

{
    i = 1;
    prev = fcu->bezt;
    bezt = fcu->bezt + 1;
    while (i < fcu->totvert)
    {
        // do something

        i++;
        prev = bezt++;
    }
}

答案 1 :(得分:1)

不,我认为它等于:

prev = fcu->bezt;
bezt = fcu->bezt + 1;
for (i = 1; i < fcu->totvert; i++) {

  // do something

  prev = bezt++

}

for中的列为for(initialization; condition; increment)

答案 2 :(得分:1)

不完全 - 它相当于:

<div class="variant--group">
<h3 class="variant--name">variant</h3>
</div>

<div class="variant--group">
<h3 class="variant--name">variant</h3>
</div>

<div class="variant--group">
<h3 class="variant--name">variant</h3>
</div>

第一个分号之前的所有内容都是初始化列表,它只在循环之前运行一次。

答案 3 :(得分:1)

你们两个循环并不相同。 for循环具有语法

for ( declaration(optional) ; condition(optional) ; increment(optional) )

declaration仅在首次输入循环时运行,condition在每个循环开始时运行,increment在每次迭代结束时运行。如果你打破它,那么大多数等价的循环都是

prev = fcu->bezt;
bezt = fcu->bezt + 1;
for (i = 1; i < fcu->totvert; i++) {

  // do something

  prev = bezt++

}   

答案 4 :(得分:1)

我c ++ for循环定义如下:

for ( init; condition; increment )
{ 
   statement(s);
}

我认为代码可以通过这种方式重写:

prev = fcu->bezt;
bezt = fcu->bezt + 1;

for (i = 1; i < fcu->totvert; i++) {
  // do something

  prev = bezt++

}

答案 5 :(得分:0)

没有。 for循环

for (init; condition ; increment ) { body; }

相当于

init;
while(condition) {
    body;
    increment;
}

在你编写的循环中,你将由几个语句组成的init部分由“,”部分放在每次迭代执行的主体中(但它只执行一次)。