"Invalid operands to binary expression"

"Invalid operands to binary expression"

在我大学的第一年 class 我们刚刚开始摆弄数组,在工作表上我得到了这段代码,但它似乎不起作用。我一直在扫描并寻找问题,但似乎无法解决问题。这是我的代码...

#include <stdio.h>
#include <stdbool.h>

int main(){

    int size = 10;
    float suspect[size]; //Declaring suspect array
    
    int sizeR = 3;
    int sizeC = 10;
    float criminals[sizeR][sizeC]; //Declaring criminals array

    //Read 10 input values into suspect array from keyboard
    printf("Enter the 10 chromosomes of the suspect separated by spaces: \n");
    for (int i = 0; i < size; i++)
        scanf(" %f", &suspect[i]);

    //Read multiple profiles of 10 values into criminals array from the keyboard
    for (int i = 0; i < sizeR; i++){
        printf("Enter the 10 chromosomes of the %dth criminal: \n", i+1);

    //Read 10 input values of a criminal into criminals array from the keyboard
    for (int j = 0; j < sizeC; j++)
        scanf(" %f", &criminals[i][j]);

    }

    //Match two profiles
    bool match = true;
    for (int i = 0; i < size; i++)
        if(suspect[i] != criminals[i]) //Error is in this line
            match = false;

    //Display matching result
    if (match)
        printf("The two profiles match! \n");
    else
        printf("The two profiles don't match! \n");

    return 0;
}

当我 运行 这段代码时,我返回:

错误:二进制表达式的操作数无效('float' 和 'float [sizeC]')

错误指向匹配的两个配置文件部分中的 !=。对不起,如果解决方案很简单,编码对我来说相对较新,我正在努力使用 Google.

找到解决这个特定问题的方法

在这个 if 语句中

if(suspect[i] != criminals[i]) //Error is in this line

表达式criminals[i]被隐式转换为类型float *,因为转换前表达式的原始类型是float[sizeC].

此外,表达式 suspect[i] 的类型为 float。也就是说,将 float 类型的对象与没有意义的 float * 类型的指针进行比较。

因此编译器发出错误信息。

如果您要将数组 suspect 与二维数组 criminals 的元素进行比较,您应该再使用一个内部 for 循环。