具有两个不同变量类型的循环初始化
For loop initialization with two different variable type
我可以像这样在 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;
}
最后一个代码 returns 我一个 syntax error
,有没有办法实现它?
您不能在同一个 for 循环中定义两个不同的类型。在循环外定义其中之一,如:
float j = 1;
for(int i = 0; i<4; i++, j++){
或在循环外定义类型并在循环内初始化值,如:
float j;
int i;
for(i = 0, j=1; i<4; i++, j++){
何不试试
#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;
}
希望这就是您想要的:)
不能在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;
}
}
所以这将按照您希望循环的方式运行。
您不能在同一个 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;
}
你想做的是这样的,
int main()
{
int i, float j ; // which is obviously Syntax error
}
现在开始回答你的问题,
Q::Why I couldln't initialize two variable of different types ?
A::Because, its' a Syntax error.
Q::is there a way to accomplish that?
A::Absolutely not.
is there a way to accomplish that?
使用 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;
}
我可以像这样在 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;
}
最后一个代码 returns 我一个 syntax error
,有没有办法实现它?
您不能在同一个 for 循环中定义两个不同的类型。在循环外定义其中之一,如:
float j = 1;
for(int i = 0; i<4; i++, j++){
或在循环外定义类型并在循环内初始化值,如:
float j;
int i;
for(i = 0, j=1; i<4; i++, j++){
何不试试
#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;
}
希望这就是您想要的:)
不能在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;
}
}
所以这将按照您希望循环的方式运行。
您不能在同一个 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;
}
你想做的是这样的,
int main()
{
int i, float j ; // which is obviously Syntax error
}
现在开始回答你的问题,
Q::Why I couldln't initialize two variable of different types ?
A::Because, its' a Syntax error.
Q::is there a way to accomplish that?
A::Absolutely not.
is there a way to accomplish that?
使用 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;
}