以下代码无法编译:
#include <iostream>
int main(){
for (int i = 0, double j = 0; i < 10; ++i, j+=.1){
std::cout << i << " " << j << '\n';
}
return 0;
}
是否可以初始化两种不同的类型,或者我是否需要创建结构/对/等?
答案 0 :(得分:8)
没有。
但你可以在那里定义一个匿名结构:
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}
初始化它,用i
初始化成员j
和0
。< / p>
答案 1 :(得分: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++){}
}
答案 2 :(得分:1)
答案 3 :(得分:0)
它们必须是相同的类型,但您可以使用结构来绕过它。
for (struct {int j; char i;} loop = {0, 'e'}; loop.i < 33; ++loop.j, ++loop.i)
{
std::cout << loop.i << '\n';
}
答案 4 :(得分: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;
}