具有两个不同变量类型的循环初始化

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

Live demo

你想做的是这样的,

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