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

Tho*_*mas 22 c++ for-loop

为什么这不起作用

for( int i = 0, int x = 0; some condition; ++i, ++x )
Run Code Online (Sandbox Code Playgroud)

这是

int i, x;
for( i = 0, x = 0; some condition; ++i, ++x )
Run Code Online (Sandbox Code Playgroud)

谢谢

fre*_*low 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';
}
Run Code Online (Sandbox Code Playgroud)

;-)

  • 哇!从来没有听说过这个. (5认同)

ser*_*iom 33

这工作:

for( int i = 0, x = 0; some condition; ++i, ++x )
Run Code Online (Sandbox Code Playgroud)

它就像一个变量声明:

int i, j; // correct
int i, int j; // wrong, must not repeat type
Run Code Online (Sandbox Code Playgroud)

  • 实际上,它是一个变量声明.确切地说,两者都是"简单声明" (5认同)

AnT*_*AnT 8

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

for标题的第一部分是声明.该

int i = 0, int x = 0
Run Code Online (Sandbox Code Playgroud)

不是有效的声明.它不会编译,for因为它不会在程序中的任何其他位置编译

int i = 0, int x = 0; // Syntax error
Run Code Online (Sandbox Code Playgroud)

当您需要int在一个声明中声明两个类型的对象时,您可以按如下方式执行此操作

int i = 0, x = 0; // OK
Run Code Online (Sandbox Code Playgroud)

可以使用相同的东西 for

for( int i = 0, x = 0; some condition; ++i, ++x )  
Run Code Online (Sandbox Code Playgroud)

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


sta*_*tas 7

正确的版本是

for (int i = 0, x = 0; some condition; ++i, ++x)
Run Code Online (Sandbox Code Playgroud)