0

以下代码将无法编译:

#include <iostream>

int main(){

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

    return 0;
}

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

4

5 回答 5

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';
}

见初始化部分:

struct { int i; double j; } x = {0,0};

它定义了一个匿名结构,然后创建一个对象x并用{0,0}它初始化它的成员ijwith 0

于 2013-04-03T18:30:20.120 回答
2

不可能,但有办法:

double var1;
int var2;
for (var2 = 0,var1 = 0.0; var2 < 12; var2++){}

如果你想限制 f 和 i 的范围,然后将它们括在 {} 中,就像

{
    double var1;
    int var2;
    for (var2 = 0,var1 = 0.0; var2 < 12; var2++){}
}
于 2013-04-03T18:30:44.207 回答
1

不,你不能。您可以有多个变量,但它们必须是相同的类型。

于 2013-04-03T18:29:13.967 回答
0

它们必须是相同的类型,但您可以使用结构来绕过它。

for (struct {int j; char i;} loop = {0, 'e'}; loop.i < 33; ++loop.j, ++loop.i)
{
    std::cout << loop.i << '\n';
}
于 2013-04-03T18:30:39.293 回答
0

可以做以下

#include<cstdlib>
#include<iostream>

int main(int argc, char *argv[]){

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


    return EXIT_SUCCESS;
}
于 2013-04-03T18:34:33.567 回答