我可以在for循环的init-expression中使用不同的类型吗?

Tre*_*key 0 c++ types loops for-loop c++11

以下代码将无法编译:

#include <iostream>

int main(){

    for (int i = 0, double j = 0; i < 10; ++i, j+=.1){
        std::cout << i << " " << j << '\n';
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

是否可以初始化两种不同的类型,或者我是否需要创建结构/对/等?

Naw*_*waz 9

没有.

但是你可以在那里定义一个匿名结构:

for (struct { int i; double j; } x = {0,0};  x.i < 10; ++x.i, x.j+=.1)
{
    std::cout << x.i << " " << x.j << '\n';
}
Run Code Online (Sandbox Code Playgroud)

查看初始化部分:

struct { int i; double j; } x = {0,0};
Run Code Online (Sandbox Code Playgroud)

它定义了一个匿名结构,则创建一个对象x,并对其进行初始化与{0,0}它初始化两个构件ij0.