我可以在for
初始化中初始化两个int变量,如下所示:
#include <iostream>
using namespace std;
int main() {
for(int i = 0, j=i+1; i<4; i++, j++){
cout << "i: " << i << ", j: " << j << endl;
}
return 0;
}
并打印:
i: 0, j: 1
i: 1, j: 2
i: 2, j: 3
i: 3, j: 4
如何初始化两个不同类型的变量,例如int和float,就像这样?
#include <iostream>
using namespace std;
int main() {
for(int i = 0, float j=i+1; i<4; i++, j++){
cout << "i: " << i << ", j: " << j << endl;
}
return 0;
}
这最后一段代码给我一个syntax error
,有没有办法实现呢?
答案 0 :(得分:2)
无法在for循环中声明和初始化多个类型的变量。
但您可以分配和使用多个类型变量,如下例所示:
#include <iostream>
using namespace std;
int main() {
int i;
float j;
for (i=0, j=i+1 ; i < 4 ; i++, j++) {
cout << "i: " << i << ", j: " << j << endl;
}
return 0;
}
}
所以这就像你希望循环行为一样。
答案 1 :(得分:1)
您不能在同一个循环中定义两种不同的类型。在循环之外定义其中一个,如:
float j = 1;
for(int i = 0; i<4; i++, j++){
OR定义循环外的类型并在循环中初始化值,如:
float j;
int i;
for(i = 0, j=1; i<4; i++, j++){
答案 2 :(得分:1)
为什么不尝试
#include <iostream>
using namespace std;
int main() {
float j = 1;
for (int i = 0 ; i < 4 ; i++, j++){
cout << "i: " << i << ", j: " << j << endl;
}
return 0;
}
只需在for循环外定义浮点数即可。或者,正如其他人所建议的那样
#include <iostream>
using namespace std;
int main() {
float j;
int i
for (i = 0, j = 1 ; i < 4 ; i++, j++){
cout << "i: " << i << ", j: " << j << endl;
}
return 0;
}
希望这是你想要的:)
答案 3 :(得分:1)
你要做的就是这样,
int main()
{
int i, float j ; // which is obviously Syntax error
}
现在,回答你的问题,
问:为什么我无法初始化两个不同类型的变量?
A ::因为,它的&#39;语法错误。
Q ::有没有办法实现这个目标?
A ::绝对不是。
答案 4 :(得分:0)
你不能在同一个for循环中定义两种不同的类型,你可以在循环之外移动类型的声明,或者使用std::pair
(或std::tuple
)将你的类型聚合成一个:
//#include <utility>
for (std::pair<int, float> p = {0, 1.f}; p.first < 4; p.first++, p.second++){
std::cout << "i: " << p.first << ", j: " << p.second << std::endl;
}
答案 5 :(得分:0)
有没有办法实现这个目标?
使用struct
:
for (struct {int i; float j;} x = {0, 1}; x.i < 4; x.i++, x.j++) {
cout << "x.i: " << x.i << ", x.j: " << x.j << endl;
}