为什么这无效
for( int i = 0, int x = 0; some condition; ++i, ++x )
这是
int i, x;
for( i = 0, x = 0; some condition; ++i, ++x )
由于
答案 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];
}