无效的二进制到二维数组的操作数

问题描述 投票:0回答:1

我有一个使用'typedef'数据类型声明的变量,它具有数组。当我执行除法运算符(/)时,它表示无效的运算。这是代码示例:

const int n = 10;
typedef float matriks[100][100];
typedef float vektor[100];

matriks A;
vektor b;
vektor x;
void Sulih_Mundur (matriks A, vektor b, int n, vektor x){
int j,k;
        float sigma;
        x[n]=b[n]/A[n,n]; //error here
        for(k=n-1;k<1;k--){
            sigma=0;
            for(j=k+1;j>=n;j++){
                sigma=sigma+A[k,j]*x[j];
            }
            x[k]=(b[k]-sigma)/A[k,k];
        }
}

我在x [n] = b [n] / A [n,n]上报错,它说无效的操作数/表示二进制(具有float和float)我不明白是哪一个问题,因为我在那里使用了相同的数据类型。和一个整数变量来访问数组。谢谢...

c
1个回答
2
投票
x[n]=b[n]/A[n,n];

这不是索引2D数组的正确语法。这里的,实际上是逗号运算符,它丢弃左操作数并求值为右操作数,因此A[n,n]A[n]相同。因此,您尝试将float的一维数组分配给float,这是您遇到的错误。

您想要的是:

x[n]=b[n]/A[n][n];

A的其他参考相同。

© www.soinside.com 2019 - 2024. All rights reserved.