For循环中的多个计数器问题

时间:2010-02-26 07:27:06

标签: c++ for-loop

为什么这无效

for( int i = 0, int x = 0; some condition; ++i, ++x )

这是

int i, x;
for( i = 0, x = 0; some condition; ++i, ++x )

由于

7 个答案:

答案 0 :(得分:37)

  

当你需要声明两个不同类型的变量时,它不能通过一个声明来完成

Hackety hack hack:

for (struct {int i; char c;} loop = {0, 'a'}; loop.i < 26; ++loop.i, ++loop.c)
{
    std::cout << loop.c << '\n';
}

- )

答案 1 :(得分:33)

这有效:

for( int i = 0, x = 0; some condition; ++i, ++x )

它就像一个变量声明:

int i, j; // correct
int i, int j; // wrong, must not repeat type

答案 2 :(得分:8)

为什么它有效?这是一个语法上毫无意义的委托。你想用它说什么?

for标题的第一部分是声明。

int i = 0, int x = 0

不是有效的声明。它不会在for中编译,原因与程序中其他任何地方都不能编译的原因相同

int i = 0, int x = 0; // Syntax error

如果需要在一个声明中声明两个类型为int的对象,请按以下步骤进行:

int i = 0, x = 0; // OK

同样的事情可以在for

中使用
for( int i = 0, x = 0; some condition; ++i, ++x )  

(但是当你需要声明不同类型的两个变量时,它不能通过一个声明来完成,因此,两者都不能同时在for中声明至少其中一个必须在for之前宣布。)

答案 3 :(得分:7)

正确的版本是

for (int i = 0, x = 0; some condition; ++i, ++x)

答案 4 :(得分:3)

因为变量声明(如int x)不是表达式而逗号运算符(,)只组合表达式。

答案 5 :(得分:3)

这是合法的:

    for(int i = 0, x = 0; condition; ++i, ++x );

int x,int y不是声明变量的合法方式;

答案 6 :(得分:0)

我实现了这种方法来计算对角线差异。我在这里计算 Antidiagonal的总和

 for(int i=0,j=n-1; i<n,j>=0;i++,j--){
    sum_right += a[i][j];
  }