0

配列内の max を見つけるための非常に単純なコードを書きました。ここで何が問題なのかわかりません...

float maxValue(float **ArrayIn, long length, long width, short* result_coor){
    int i,j;
    float maxvalue = ArrayIn[0][0];
    for(i=0;i<length;i++){
        for(j=0;j<width;j++){
            if((ArrayIn[i][j]>maxValue)==1){
                maxValue = ArrayIn[i][j];
                result_coor[0] = i;
                result_coor[1] = j;
            }
        }
    }
    return maxvalue;
}

次のエラーが表示されます。

array_processing.c: In function ‘maxValue’:
array_processing.c:9:20: error: invalid operands to binary > (have ‘float’ and ‘float
(*)(float **, long int,  long int,  short int *)’)
array_processing.c:10:13: error: lvalue required as left operand of assignment
make: *** [array_processing.o] Error 1
4

2 に答える 2

8

あなたは自分自身を裏切ることができました。maxValue関数maxvalueの名前であり、ローカル変数の名前です。スペルをもう一度確認してください。そして、次回はもっと良い名前を選んでください。

于 2013-07-03T19:08:05.753 に答える
2

タイプミスです: を使用してください

if((ArrayIn[i][j]>maxvalue)==1){
                     ^
                    !!!

    maxvalue = ArrayIn[i][j];
       ^
      !!!

float maxvalue変数(非大文字の 'v') と関数(大文字の 'v')を宣言したmaxValue(...)ため、コンパイラは、関数を比較の 2 番目のオペランドとして使用しようとしますmaxValue

C は大文字と小文字が区別されることに注意してください。したがってmaxvalue、 とmaxValueは異なる記号ですが、適切に使用する必要があります。

理想的には、関数名にgetMaxValue()orを使用するなど、より適切な名前を選択して、このような問題を回避するようにしてください。calculateMaxValue()

それに加えて、if((ArrayIn[i][j]>maxvalue)==1)不必要に複雑です-単に使用します

if(ArrayIn[i][j] > maxvalue)
于 2013-07-03T19:07:32.443 に答える