C++ 错误错误:数组下标的类型"双精度 [10][10][double]"无效



我试图以0.1的增量从0到1来生成网格。当我使用整数以1增量为1时,该代码运行正常,但我无法理解这是什么问题。

#include <iostream>
using namespace std;
int main()
{
double u[10][10];
double dx=0.1, i, j;
for(i=0;i<=1;i+=dx)
for(j=0;j<=1;j+=dx)
{
    u[i][j]=i; // this line gives an error
}
}

您遇到的问题是,您正在尝试使用double(例如0.3)访问数组的索引。由于数组索引是整数,因此尝试访问双索引将导致错误。

我认为这是您要做的,所以请尝试以下操作:

#include <iostream>
using namespace std;
int main()
{
    double u[11][11];
    for (int i = 0; i <= 10; i++)
        for (int j = 0; j <= 10; j++)
            u[i][j] = (double)(i / 10.0);
}

因此,我们不是在[0.3] [0.3]中尝试访问u,而是在[3] [3]中访问u,而只是将i更改为双重输入i。

最新更新